﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class УправлениеЗаказами
	{
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ РАБОТЫ С ЗАКАЗАМИ
		//Функция определяет флаг (Булево) использования заказа в табличной части.
		//
		// Параметры:
		//  ДокументВидОперации   – вид операции документа,
		//  ДоговорКонтрагента    – договор с контрагентом,
		//  ВидОперации           - строка, определяет вид операции, возможные значения "Поступление", "Реализация","ПоступлениеНТТ", "РеализацияСчет", "ВозвратОтПокупателя"
		//                          по умолчанию "Реализация".
		// Возвращаемые значение:
		//  Истина, если есть Заказ в табличной части
		//

		public object ЕстьЗаказВТабличнойЧасти(/*ДокументВидОперации, ДоговорКонтрагента, ВидОперации = "Реализация"*/)
		{
			//ИспользоватьКолонкуЗаказ = ИспользоватьЗаказВТабличнойЧасти(ДокументВидОперации, ДоговорКонтрагента, ВидОперации);
			return null;
		}
		// ЕстьЗаказВТабличнойЧасти()
		//Функция определяет флаг (Булево) обязательного заполнения заказа в табличной части.
		//
		// Параметры:
		//  ДокументВидОперации   – вид операции документа,
		//  ДоговорКонтрагента    – договор с контрагентом,
		//  ВидОперации           - строка, определяет вид операции, возможные значения "Поступление", "Реализация","ПоступлениеНТТ", "РеализацияСчет", "ВозвратОтПокупателя"
		//                          по умолчанию "Реализация".
		// Возвращаемые значение:
		//  Истина, если есть Заказ в табличной части
		//

		public object ПроверятьЗаказВТабличнойЧасти(/*ДокументВидОперации, ДоговорКонтрагента, ВидОперации = "Реализация"*/)
		{
			//ПроверятьЗаказ = ИспользоватьЗаказВТабличнойЧасти(ДокументВидОперации, ДоговорКонтрагента, ВидОперации);
			if(true/*ПроверятьЗаказ.ОбязательноеЗаполнениеЗаказаВТабЧасти*/)
			{
				//ПроверятьЗаказ = Истина;
			}
			return null;
		}
		// ПроверятьЗаказВТабличнойЧасти()
		//Функция определяет использование заказа в табличной части.
		//
		// Параметры:
		//  ДокументВидОперации   – вид операции документа,
		//  ДоговорКонтрагента    – договор с контрагентом,
		//  ВидОперации           - строка, определяет вид операции, возможные значения "Поступление", "Реализация","ПоступлениеНТТ", "РеализацияСчет", "ВозвратОтПокупателя"
		//                          по умолчанию "Реализация".
		// Возвращаемые значение:
		//  Да; Нет; ОбязательноеЗаполнение
		//

		public object ИспользоватьЗаказВТабличнойЧасти(/*ДокументВидОперации, ДоговорКонтрагента, ВидОперации = "Реализация"*/)
		{
			//УказаниеЗаказов = глЗначениеПеременной("УказаниеЗаказовВТабличнойЧастиДокументов");
			//ИспользоватьКолонкуЗаказ = Новый Структура("ИспользоватьЗаказВТабЧасти, ОбязательноеЗаполнениеЗаказаВТабЧасти");
			//ИспользоватьКолонкуЗаказ.ИспользоватьЗаказВТабЧасти = Ложь;
			//ИспользоватьКолонкуЗаказ.ОбязательноеЗаполнениеЗаказаВТабЧасти = Ложь;
			if(true/*ВидОперации = "Реализация"
	 ИЛИ ВидОперации = "РеализацияСчет"
	 ИЛИ ВидОперации = "ВозвратОтПокупателя"*/)
			{
				/*УказаниеЗаказов = (УказаниеЗаказов = Перечисления.ВариантыУказанияЗаказовВТабличнойЧастиДокументов.ДляДокументовПоступленияРеализации)
		              ИЛИ (УказаниеЗаказов = Перечисления.ВариантыУказанияЗаказовВТабличнойЧастиДокументов.ДляДокументовРеализации);*/
			}
			//ИспользоватьКолонкуЗаказ.ИспользоватьЗаказВТабЧасти = УказаниеЗаказов;
			if(true/*УказаниеЗаказов*/)
			{
				if(true/*ВидОперации = "Реализация"*/)
				{
					if(true/*ДокументВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.Оборудование*/)
					{
						//ИспользоватьКолонкуЗаказ.ИспользоватьЗаказВТабЧасти = Ложь;
					}
				}
			}
			return null;
		}
		// ИспользоватьЗаказВТабличнойЧасти()
		// Функция возвращает флаг использования подсистемы внутренних заказов
		//

		public object ИспользоватьВнутренниеЗаказы(/*Сообщать = Ложь*/)
		{
			//Флаг = глЗначениеПеременной("ИспользоватьВнутренниеЗаказы");
			if(true/*Не Флаг И Сообщать*/)
			{
				/*Сообщить("Использование внутренних заказов в данной конфигурации отключено.
		|Включить использование внутренних заказов можно в форме ""Настройка параметров учета"" в разделе ""Заказы""", СтатусСообщения.ОченьВажное);*/
			}
			return null;
		}
		// ИспользоватьВнутренниеЗаказы()
		// Функция возвращает флаг использования заказов на производство.
		//

		public object ИспользоватьЗаказыНаПроизводство(/*Сообщать = Ложь*/)
		{
			//Флаг = глЗначениеПеременной("ИспользоватьЗаказыНаПроизводство");
			if(true/*Не Флаг И Сообщать*/)
			{
				/*ОбщегоНазначения.Сообщение("Использование заказов на производство в данной конфигурации отключено. 
			|Включить использование заказов на производство можно в форме ""Настройка параметров учета"" в разделе ""Заказы на производство""", СтатусСообщения.ОченьВажное);*/
			}
			return null;
		}
		// ИспользоватьЗаказыНаПроизводство()
		// Процедура выполняет стандартные действия при начале выбора документа составного типа в формах документов.
		//
		// Параметры:
		//  ДокументОбъект       - объект редактируемого документа;
		//  ФормаДокумента       - форма редактируемого документа;
		//  ЭлементФормы         - элемент формы документа, который надо заполнить;
		//  СтандартнаяОбработка - булево, признак выполнения стандартной (системной) обработки события
		//                         начала выбора для данного элемента формы документа.
		//  СтруктураОтбора      - структура, содержащая имена и значения отборов в форме выбора.
		//  ИмяТабличнойЧасти    - имя табличной части.
		//  ДопПараметры         - структура с дополнительными параметрами.
		//

		public void НачалоВыбораДокументаЗаказа(/*ДокументОбъект, ФормаДокумента, ЭлементФормы, 
	                   СтандартнаяОбработка, СтруктураОтбора, ИмяТабличнойЧасти, ДопПараметры = Неопределено, ИмяКолонки = Неопределено*/)
		{
			//СтандартнаяОбработка = Ложь;
			/*// Заполним возможный список типов документов, которые могут быть в этом реквизите.
*/
			//СписокТипов = Новый СписокЗначений;
			if(true/*ПустаяСтрока(ИмяТабличнойЧасти)*/)
			{
				/*// Шапка документа
*/
				//МассивТипов = ДокументОбъект.Метаданные().Реквизиты[ЭлементФормы.Данные].Тип.Типы();
			}
			//МассивТиповИсключений     = Новый Массив;
			//МассивДоступныеПоляОтбора = Новый Массив;
			if(true/*ДопПараметры <> Неопределено*/)
			{
				if(true/*ДопПараметры.Свойство("ИсключаемыеТипы")*/)
				{
					//МассивТиповИсключений = ДопПараметры.ИсключаемыеТипы;
				}
				if(true/*ДопПараметры.Свойство("ДоступныеПоляОтбора")*/)
				{
					//МассивДоступныеПоляОтбора = ДопПараметры.ДоступныеПоляОтбора;
				}
			}
			if(true/*Не ИспользоватьВнутренниеЗаказы()*/)
			{
				//Индекс = МассивТипов.ВГраница();
				//ТипВнутрЗаказ = Тип("ДокументСсылка.ВнутреннийЗаказ");
				while(true/*Индекс >= 0*/)
				{
					if(true/*ТипВнутрЗаказ = МассивТипов[Индекс]*/)
					{
						//МассивТипов.Удалить(Индекс);
					}
					//Индекс = Индекс - 1;
				}
				//;;
			}
			if(true/*Не УправлениеЗаказами.ИспользоватьЗаказыНаПроизводство()*/)
			{
				//Индекс = МассивТипов.ВГраница();
				//ТипЗаказНаПроизводство = Тип("ДокументСсылка.ЗаказНаПроизводство");
				while(true/*Индекс >= 0*/)
				{
					if(true/*ТипЗаказНаПроизводство = МассивТипов[Индекс]*/)
					{
						//МассивТипов.Удалить(Индекс);
					}
					//Индекс = Индекс - 1;
				}
				//;;
			}
			if(true/*МассивТипов.Количество() = 0*/)
			{
				/*// Удалили все возможные типы
*/
				/*// Выбор невозможен
*/
			}
			if(true/*ТипЗнч(ЭлементФормы.Значение) <> Тип("ДокументСсылка." + ВыбранныйТип)*/)
			{
				//ЭлементФормы.Значение = Документы[ВыбранныйТип].ПустаяСсылка();
			}
			/*// В качестве владельца формы выбора устанавливаем данный элемент,
*/
			/*// чтобы выбранное значение было присвоено стандартно.
*/
			//ФормаВыбора = Документы[ВыбранныйТип].ПолучитьФормуВыбора(,ЭлементФормы,);
			/*// Проверка возможности отбора по сделке
*/
			if(true/*СтруктураОтбора.Свойство("Сделка")*/)
			{
				if(true/*ФормаВыбора.Отбор.Найти("Сделка")= Неопределено*/)
				{
					//СтруктураОтбора.Удалить("Сделка");
				}
			}
			/*// Отфильтруем список документов.
*/
			if(true/*ЗначениеЗаполнено(ЭлементФормы.Значение)*/)
			{
				//ФормаВыбора.ПараметрТекущаяСтрока = ЭлементФормы.Значение;
			}
			//ФормаВыбора.Открыть();
		}
		// НачалоВыбораДокументаЗаказа()
		// Заполняет заказ покупателя в табличной части документа значением из шапки.
		// Параметры:
		//  ДокументОбъект       - объект редактируемого документа;
		//	ДокументВидОперации - вид операции документа
		//	ВидОперации - строка, определяет вид операции, возможные значения "Поступление", "Реализация","ПоступлениеНТТ", "РеализацияСчет",

		public void ЗаполнитьЗаказПокупателяВТЧ(/*ДокументВидОперации, ДокументОбъект, ВидОперации*/)
		{
			//ЕстьКолонкаЗаказ = ЕстьЗаказВТабличнойЧасти(ДокументВидОперации, ДокументОбъект.ДоговорКонтрагента, ВидОперации);
			/*// Если есть заказ в ТЧ, тогда заполнять не нужно.
*/
			if(true/*ЕстьКолонкаЗаказ*/)
			{
			}
			if(true/*ДокументВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.Оборудование*/)
			{
				/*//для оборудования заказы в таб части не предусмотрены
*/
				//ЗаказИзШапки = Документы.ЗаказПокупателя.ПустаяСсылка();
			}
			if(true/*ВидОперации <> "ВозвратОтПокупателя"*/)
			{
			}
		}
		//ЗаполнитьЗаказПокупателяВТЧ()
		// Заполняет заказ поставщику в табличной части документа значением из шапки.
		// Параметры:
		//	ДокументВидОперации - вид операции документа
		//	ВидОперации - строка, определяет вид операции, возможные значения "Поступление", "Реализация","ПоступлениеНТТ", "РеализацияСчет",

		public void ЗаполнитьЗаказПоставщикуВТЧ(/*ДокументВидОперации, ДокументОбъект, ВидОперации*/)
		{
			//ЕстьКолонкаЗаказ = ЕстьЗаказВТабличнойЧасти(ДокументВидОперации, ДокументОбъект.ДоговорКонтрагента, ВидОперации);
			/*// Если есть заказ в ТЧ, тогда заполнять не нужно.
*/
			if(true/*ЕстьКолонкаЗаказ*/)
			{
			}
			//БратьЗаказИзШапки = ТипЗнч(ДокументОбъект.Сделка) = Тип("ДокументСсылка.ЗаказПоставщику");
			//ЗаказИзШапки     = ?(БратьЗаказИзШапки, ДокументОбъект.Сделка, Документы.ЗаказПоставщику.ПустаяСсылка());
			if(true/*ВидОперации = "Поступление"*/)
			{
			}
		}
		//ЗаполнитьЗаказПоставщикуВТЧ()

		public void ПроверитьИОчиститьЗаказВТабличнойЧастиПриИзмененииДоговора(/*ДоговорКонтрагента,ТабличнаяЧасть, ИмяРеквизитаЗаказ*/)
		{
			if(true/*ТабличнаяЧасть.Количество()=0*/)
			{
			}
		}
		//Проверяет наличие резервирования возвратной тары под заказ покупателя с обособленным учетом.
		//Вызывается в контексте проверки заполнения табличных частей при проведении документа
		//Параметры:
		//  ДокументОбъект  – проверяемый документ
		//  ИмяРевизитаЗаказ  – Строка, имя реквизита в котором содержится заказ под который происходит резервирование
		//  ЗаказВШапке  – Булево, признак указания заказа в шапке документа. Если ложь - тогда заказ в табличной части
		//  ИмяРеквизитаСклад  – Строка, имя реквизита в котором содержится Склад на котором происходит резервирование
		//			Имеет смысл, если Заказ указывается в шапке документа (например, для документа КорректировкаЗаказаПокупателя)
		//  Отказ - Булево, признак отказа от проведения документа
		//  Заголовок - строка, служит для вывода информационных сообщений

		public void ПроверитьРезервированиеТарыПодЗаказСОбособленнымУчетом(/*ДокументОбъект,ИмяРевизитаЗаказ="", ЗаказВШапке=ложь, ИмяРеквизитаСклад="", Отказ, Заголовок*/)
		{
			/*//Признак ведения особленного учета по заказу
*/
			/*//Табличная часть не заполнена
*/
			if(true/*ДокументОбъект.ВозвратнаяТара.Количество()=0*/)
			{
			}
			//ПредставлениеТабличнойЧасти = "Тара";
			if(true/*ЗаказВШапке*/)
			{
				/*//заказ резервирования указывается в шапке документа
*/
				//ОбособленныйУчетПоЗаказу = ложь;
				//Заказ = ДокументОбъект[ИмяРевизитаЗаказ];
				if(true/*не ЗначениеЗаполнено(Заказ)*/)
				{
				}
				if(true/*ТипЗнч(Заказ)=Тип("ДокументСсылка.ЗаказПокупателя") И Заказ.ДоговорКонтрагента.ОбособленныйУчетТоваровПоЗаказамПокупателей*/)
				{
					//ОбособленныйУчетПоЗаказу = истина;
				}
				/*//Заказ в шапке, и он без обособленного учета - больше ничего не надо проверять
*/
				if(true/*не ОбособленныйУчетПоЗаказу*/)
				{
				}
			}
			/*//Соответствие, содержащее признаки ведения обособленного учета по уже обработанным заказам. Для ускорения процедуры проверки
*/
			//СоответствиеОбособленныйУчетПоЗаказу = новый Соответствие();
		}
		// Обеспечивает получение отбора по шапке документа для дальнейшего выбора заказов
		//

		public object ПолучитьСтруктуруОтбораПоЗаказам(/*ДокОбъект*/)
		{
			//СтруктураОтбора = Новый Структура;
			//СтруктураОтбора.Вставить( "Организация",        ДокОбъект.Организация);
			//СтруктураОтбора.Вставить( "Контрагент",         ДокОбъект.Контрагент);
			if(true/*НЕ ДокОбъект.ДоговорКонтрагента.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоСчетам*/)
			{
				if(true/*ДокОбъект.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ВПереработку*/)
				{
					//СтруктураОтбора.Вставить( "ВидОперации", Перечисления.ВидыОперацийЗаказПоставщику.Переработка);
				}
			}
			return null;
		}
		// Функция возвращает заказ из табличной части документа
		//
		// Параметры
		//	Параметры - <Структура> - структура содержит ключи:
		//                            "Основание" - <ДокументСсылка> - документ из которого необходимо получить заказ
		//                            "ТипыВозможныхЗаказов" - <СписокЗначений> - возможные типы заказов в виде строки,
		//                                                      например Докумет.ЗаказНаПроизводство
		//                            "ТабЧасти" - <Структура> - содержит в качестве ключа:
		//                                         имя табличной части, а в качестве значения
		//                                         имя реквизита содержащего заказ
		//
		// Возвращаемое значение:
		//
		//

		public object ВыбратьЗаказИзДокументаОснования(/*Параметры*/)
		{
			//ФормаВыбора = ПолучитьОбщуюФорму("ФормаВыбораЗаказа");
			//ФормаВыбора.НачальноеЗначениеВыбора = Параметры;
			//ФормаВыбора.ОткрытьМодально();
			//Результат = ФормаВыбора.ВыбранноеЗначение;
			return null;
		}
		// ВыбратьЗаказИзДокументаОснования
		//Функция возвращает значение типа Булево - признак записи документа
		//	Используется в документах Заказ...  перед вызовом отчета АнализЗаказа

		public object ДокументЗаписан(/*Ссылка,флСообщать=истина*/)
		{
			if(true/*не ЗначениеЗаполнено(Ссылка)*/)
			{
				if(true/*флСообщать*/)
				{
					//Сообщить("Новый документ не записан! Невозможно сформировать отчет 'Анализ заказа'", СтатусСообщения.Важное);
				}
			}
			return null;
		}

		public void ВывестиПризнакОбособленныйУчетВФормуСписка(/*Элемент, ОформленияСтрок, соотвТипы*/)
		{
			//МассивДокументов = новый Массив;
			//Соответствие = новый Соответствие;
			//Запрос = новый Запрос;
			/*Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|Ссылка,
	|ВЫРАЗИТЬ(Ссылка.ДоговорКонтрагента.ОбособленныйУчетТоваровПоЗаказамПокупателей КАК Булево) КАК ОбособленныйУчет
	|ИЗ Документ.ЗаказПокупателя
	|ГДЕ Ссылка в (&МассивДокументов) И ВЫРАЗИТЬ(Ссылка.ДоговорКонтрагента.ОбособленныйУчетТоваровПоЗаказамПокупателей КАК Булево)";*/
			if(true/*соотвТипы.Количество()>0*/)
			{
			}
			//Запрос.УстановитьПараметр("МассивДокументов",МассивДокументов);
			//Выборка = Запрос.Выполнить().Выбрать();
			while(true/*Выборка.Следующий()*/)
			{
				//Соответствие.Получить(Выборка.Ссылка).Ячейки.ОбособленныйУчет.Флажок = Выборка.ОбособленныйУчет;
			}
			//;;
		}
		// Процедура заполнения реквизита "ДатаОплаты" по договору. Вызывается из заказов и счетов
		//
		// Параметры:
		//  РежимВызова - режим вызова процедуры.
		//

		public void УстановитьДатуОплатыПоДоговору(/*ДокОбъект, РежимВызова = "", мСтароеЗначениеДоговора=неопределено*/)
		{
			/*Экспорт
    ДоговорКонтрагента 	= ДокОбъект.ДоговорКонтрагента;*/
			//ДатаДокумента 		= ДокОбъект.Дата;
			if(true/*НЕ ЗначениеЗаполнено(ДатаДокумента)*/)
			{
			}
			if(true/*ДоговорКонтрагента.ДержатьРезервБезОплатыОграниченноеВремя*/)
			{
				//ЧислоДнейДоОплаты = ДоговорКонтрагента.ЧислоДнейРезерваБезОплаты;
			}
			if(true/*ЧислоДнейДоОплаты = 0*/)
			{
				//ДатаОплатыНовая = ДатаДокумента;
			}
			if(true/*ДокОбъект.ДатаОплаты <> ДатаОплатыНовая*/)
			{
				/*// Проверка режима вызова процедуры
*/
				if(true/*НЕ ПустаяСтрока(РежимВызова)*/)
				{
					//ТекстВопроса = "";
					if(true/*РежимВызова = "ДатаДокумента"*/)
					{
						//ТекстВопроса = "Изменилась дата документа.";
					}
					if(true/*ТекстВопроса<>""*/)
					{
						if(true/*Вопрос(ТекстВопроса + " Пересчитать дату оплаты?", 
					РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Нет*/)
						{
						}
					}
				}
				//ДокОбъект.ДатаОплаты = ДатаОплатыНовая;
			}
		}
		// УстановитьДатуОплатыПоДоговору()
		// Возвращает данные последнего проведенного заказа покупателя или изменения заказа
		//
		// Параметры:
		//	ЗаказПокупателя				-	<ДокументСсылка>, ссылка на заказ покупателя
		//	НаДату						-	<Дата>, дата не позже которой должны быть документы
		//
		// Возвращаемое значение:
		//	<Неопределено>	- если заказ покупателя не проведен
		//	<Структура>		- содержит свойства:
		//						Заказ			- <ДокументСсылка>, ссылка на заказ покупателя или изменение заказа
		//						ИмяЗаказа		- <Строка>, содержит имя документа
		//						ДатаЗаказа		- <Дата>, дата заказа
		//

		public object ПолучитьПоследнийЗаказПокупателяИлиИзменениеЗаказаПокупателя(/*ЗаказПокупателя, НаДату = Неопределено*/)
		{
			if(true/*НЕ ЗаказПокупателя.Проведен*/)
			{
			}
			//Запрос = Новый Запрос;
			if(true/*НаДату = Неопределено*/)
			{
				//УсловиеДатаЗаказа = "";
			}
			/*// Получим последний ЗаказПокупателя или ИзменениеЗаказаПокупателя 
*/
			/*Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	ВложенныйЗапрос.АктуальныйЗаказ КАК АктуальныйЗаказ,
		|	ВложенныйЗапрос.ДатаЗаказа КАК ДатаЗаказа,
		|	ВложенныйЗапрос.ИмяЗаказа КАК ИмяЗаказа
		|ИЗ
		|	(ВЫБРАТЬ
		|		ДокЗаказ.Ссылка КАК АктуальныйЗаказ,
		|		ДокЗаказ.Дата КАК ДатаЗаказа,
		|		""ЗаказПокупателя"" КАК ИмяЗаказа
		|	ИЗ
		|		Документ.ЗаказПокупателя КАК ДокЗаказ
		|	ГДЕ
		|		ДокЗаказ.Ссылка = &ЗаказПокупателя
		|		И ДокЗаказ.Проведен
		|	
		|	ОБЪЕДИНИТЬ ВСЕ
		|	
		|	ВЫБРАТЬ
		|		ДокЗаказ.Ссылка,
		|		ДокЗаказ.Дата,
		|		""ИзменениеЗаказаПокупателя""
		|	ИЗ
		|		Документ.ИзменениеЗаказаПокупателя КАК ДокЗаказ
		|	ГДЕ
		|		ДокЗаказ.ЗаказПокупателя = &ЗаказПокупателя
		|		" + УсловиеДатаЗаказа + "
		|		И ДокЗаказ.Проведен) КАК ВложенныйЗапрос
		|
		|УПОРЯДОЧИТЬ ПО
		|	ДатаЗаказа УБЫВ";*/
			//Запрос.УстановитьПараметр("ЗаказПокупателя", ЗаказПокупателя);
			//Выборка = Запрос.Выполнить().Выбрать();
			//Результат = Неопределено;
			if(true/*Выборка.Следующий()*/)
			{
				//Результат = Новый Структура("Заказ,ИмяЗаказа,ДатаЗаказа", Выборка.АктуальныйЗаказ, Выборка.ИмяЗаказа, Выборка.ДатаЗаказа);
			}
			return null;
		}
		// ПолучитьПоследнийЗаказПокупателяИлиИзменениеЗаказаПокупателя
		//Функция возвращает значение типа Булево - признак есть ли доступ на использование отчета
		//	Используется при вызове из кода отчета АнализЗаказа.

		public object ПравоДоступаКОтчету(/*ИмяОтчета, флСообщать=истина*/)
		{
			//МетаданныеОтчета = Метаданные.Отчеты[ИмяОтчета];
			if(true/*ПравоДоступа("Использование",МетаданныеОтчета)*/)
			{
			}
			if(true/*флСообщать*/)
			{
				//Сообщить("Нарушение прав доступа! Отчет: "+МетаданныеОтчета.Синоним,СтатусСообщения.Важное);
			}
			return null;
		}

		public void СформироватьОтчетАнализЗаказа(/*ЗаказСсылка,флПроверятьЗаписьЗаказа=ложь, флСообщатьОбОшибках*/)
		{
			if(true/*флПроверятьЗаписьЗаказа И не УправлениеЗаказами.ДокументЗаписан(ЗаказСсылка,флСообщатьОбОшибках)*/)
			{
			}
			if(true/*НЕ ЗначениеЗаполнено(ЗаказСсылка) 
		ИЛИ (ТипЗнч(ЗаказСсылка) <> Тип("ДокументСсылка.ЗаказПокупателя") И
		ТипЗнч(ЗаказСсылка) <> Тип("ДокументСсылка.ЗаказПоставщику") И
		ТипЗнч(ЗаказСсылка) <> Тип("ДокументСсылка.ВнутреннийЗаказ"))*/)
			{
				//Предупреждение("Не выбран заказ!");
			}
			if(true/*не УправлениеЗаказами.ПравоДоступаКОтчету("АнализЗаказа", флСообщатьОбОшибках)*/)
			{
			}
			//АнализЗаказа = Отчеты.АнализЗаказа.Создать();
			//АнализЗаказаФорма = АнализЗаказа.ПолучитьФорму();
			//АнализЗаказа.Заказ = ЗаказСсылка;
			//АнализЗаказа.СформироватьОтчет(АнализЗаказаФорма.ЭлементыФормы.ДокументРезультат);
			//АнализЗаказаФорма.Открыть();
		}
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ ДЛЯ ДОКУМЕНТОВ "Закрытие заказов ..."
		//Подготовка таблицы для формирования движений по регистру РазмещениеЗаказов
		//
		// Параметры:
		//		ДокСсылка - ссылка на документ
		//		МоментВремени - момент времени документа для определения остатков
		//		СписокЗаказов - массив заказов для отбора
		//		РазмещенияВЗаказе - булево, признак того что в заказе данного вида можно размещать другие заказы
		//		РазмещенияЗаказа - булево, признак того что заказ данного вида может быть размещен в других заказах

		public object ПодготовитьТаблицуДляЗакрытияРазмещения(/*ДокСсылка,МоментВремени,СписокЗаказов,РазмещенияВЗаказе,РазмещенияЗаказа, Знак = ""*/)
		{
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр( "ДокументСсылка",  ДокСсылка);
			//Запрос.УстановитьПараметр( "МоментДокумента", МоментВремени);
			//Запрос.УстановитьПараметр( "СписокЗаказов",   СписокЗаказов);
			//ТекстУсловие = "";
			if(true/*РазмещенияВЗаказе*/)
			{
				//ТекстУсловие = ТекстУсловие + ?(ТекстУсловие="",""," ИЛИ ")+" ЗаказПоставщику В (&СписокЗаказов) ";
			}
			if(true/*РазмещенияЗаказа*/)
			{
				//ТекстУсловие = ТекстУсловие + ?(ТекстУсловие="",""," ИЛИ ")+" ЗаказПокупателя В (&СписокЗаказов) ";
			}
			/*Запрос.Текст = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|    ЗаказПоставщику,
	|    Номенклатура,
	|    ХарактеристикаНоменклатуры,
	|    ТоварТара,
	|    ЗаказПокупателя,
	|    " + Знак + "КоличествоОстаток          КАК Количество
	|ИЗ
	|    РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки(&МоментДокумента, "+ТекстУсловие+")
	|Упорядочить по
	|    ЗаказПоставщику,
	|    Номенклатура,
	|    ХарактеристикаНоменклатуры,
	|    ТоварТара,
	|    ЗаказПокупателя
	|";*/
			return null;
		}
		//Подготовка таблицы для формирования движений по регистру ТоварыВРезервеНаСкладах
		//
		// Параметры:
		//		ДокСсылка - ссылка на документ
		//		МоментВремени - момент времени документа для определения остатков
		//		СписокЗаказов - массив заказов для отбора

		public object ПодготовитьТаблицуДляЗакрытияРезервов(/*ДокСсылка, МоментВремени, СписокЗаказов, Знак=""*/)
		{
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр( "ДокументСсылка",  ДокСсылка);
			//Запрос.УстановитьПараметр( "МоментДокумента", МоментВремени);
			//Запрос.УстановитьПараметр( "СписокЗаказов",   СписокЗаказов);
			/*Запрос.Текст = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|    Склад,
	|    ДокументРезерва,
	|    Номенклатура,
	|    ХарактеристикаНоменклатуры,
	|	 СерияНоменклатуры,
	|    " + Знак + "КоличествоОстаток          КАК Количество
	|ИЗ
	|    РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&МоментДокумента, ДокументРезерва В (&СписокЗаказов))
	|Упорядочить по
	|    Склад,
	|    ДокументРезерва,
	|    Номенклатура,
	|    ХарактеристикаНоменклатуры,
	|	СерияНоменклатуры
	|";*/
			return null;
		}
		//Подготовка таблицы для формирования движений по регистру ПричиныЗакрытияЗаказов
		//
		// Параметры:
		//		Заголовок - строка для вывода информационных сообщений
		//		ДокСсылка - ссылка на документ
		//		ИмяРеквизитаЗаказ - имя реквизита в котором хранится заказ в табличной части документа
		//		ИмяДокумента - имя вызвавшего документа
		//      ТаблицаПоЗаказам - таблица значений с данными для закрытия заказов покупателей/поставщикам, необходима для получения суммы заказа

		public object ПодготовитьТаблицуПричинЗакрытияЗаказов(/*Заголовок, ДокСсылка, ИмяРеквизитаЗаказ, ИмяДокумента, ТаблицаПоЗаказам=неопределено*/)
		{
			if(true/*ТаблицаПоЗаказам<>неопределено*/)
			{
				//КопияТаблицаПоЗаказам = ТаблицаПоЗаказам.Скопировать(,ИмяРеквизитаЗаказ+",СуммаУпр,СуммаВзаиморасчетов");
				//КопияТаблицаПоЗаказам.Колонки[ИмяРеквизитаЗаказ].Имя = "Заказ";
				//КопияТаблицаПоЗаказам.Свернуть ("Заказ", "СуммаУпр,СуммаВзаиморасчетов");
			}
			//Запрос = новый Запрос;
			/*ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
	               |	ТекЗакрытие.%ИмяРеквизитаЗаказ% КАК Заказ,
	               |	ПРЕДСТАВЛЕНИЕ(ТекЗакрытие.%ИмяРеквизитаЗаказ%) КАК ЗаказПредставление,
	               |	ТекЗакрытие.ПричинаЗакрытияЗаказа КАК ПричинаЗакрытияЗаказа,
	               |	РегистрПричины.Регистратор КАК ПредыдущееЗакрытие,
	               |	ПРЕДСТАВЛЕНИЕ(РегистрПричины.Регистратор) КАК ПредыдущееЗакрытиеПредставление,
	               |	0 КАК СуммаУпрУчета,
	               |	0 КАК СуммаВзаиморасчетов
	               |ИЗ  Документ.%ИмяДокумента%.Заказы КАК ТекЗакрытие
	               |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПричиныЗакрытияЗаказов КАК РегистрПричины
	               |		ПО РегистрПричины.Заказ = ТекЗакрытие.%ИмяРеквизитаЗаказ%
	               |			И РегистрПричины.Регистратор <> &Ссылка
				   |	ГДЕ
	               |		ТекЗакрытие.Ссылка = &Ссылка
	               |		И ТекЗакрытие.ПричинаЗакрытияЗаказа <> &ПустаяПричина
				   |Упорядочить по %ИмяРеквизитаЗаказ%";*/
			//ТекстЗапроса = стрЗаменить(ТекстЗапроса,"%ИмяРеквизитаЗаказ%",ИмяРеквизитаЗаказ);
			//ТекстЗапроса = стрЗаменить(ТекстЗапроса,"%ИмяДокумента%",ИмяДокумента);
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.УстановитьПараметр("Ссылка", ДокСсылка);
			//Запрос.УстановитьПараметр("ПустаяПричина", Справочники.ПричиныЗакрытияЗаказов.ПустаяСсылка());
			//ТаблицаПричиныЗакрытия = Запрос.Выполнить().Выгрузить();
			//МассивНаУдаление = Новый Массив();
			//ТаблицаПричиныЗакрытия.Свернуть("Заказ, ПричинаЗакрытияЗаказа", "СуммаУпрУчета, СуммаВзаиморасчетов");
			return null;
		}
		//Подготовка таблицы для формирования движений по регистру ЗаказыПокупателей
		//
		// Параметры:
		//		ДокСсылка - ссылка на документ
		//		МоментВремени - момент времени документа для определения остатков
		//		СписокЗаказов - массив заказов для отбора

		public object ПодготовитьТаблицуДляЗакрытияЗаказовПокупателей(/*ДокСсылка,МоментВремени,СписокЗаказов, Знак = ""*/)
		{
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("ДокументСсылка",            ДокСсылка);
			//Запрос.УстановитьПараметр("МоментДокумента",           МоментВремени);
			//Запрос.УстановитьПараметр("СписокЗаказов",             СписокЗаказов);
			/*Запрос.Текст = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ЗаказыПокупателейОстатки.ДоговорКонтрагента,
	|	ЗаказыПокупателейОстатки.ДоговорКонтрагента.ОбособленныйУчетТоваровПоЗаказамПокупателей КАК ОбособленныйУчетТоваровПоЗаказамПокупателей,
	|	ЗаказыПокупателейОстатки.ЗаказПокупателя,
	|	ЗаказыПокупателейОстатки.ЗаказПокупателя.ОтражатьВБухгалтерскомУчете КАК ОтражатьВБухгалтерскомУчете,
	|	ЗаказыПокупателейОстатки.ЗаказПокупателя.ОтражатьВНалоговомУчете КАК ОтражатьВНалоговомУчете,
	|	ЗаказыПокупателейОстатки.ЗаказПокупателя.Организация КАК Организация,
	|	ЗаказыПокупателейОстатки.Номенклатура,
	|	ЗаказыПокупателейОстатки.ХарактеристикаНоменклатуры,
	|	ЗаказыПокупателейОстатки.СтатусПартии, 
	|	ЗаказыПокупателейОстатки.Цена,
	|	ЗаказыПокупателейОстатки.ЕдиницаИзмерения,
	|	ЗаказыПокупателейОстатки.ПроцентСкидкиНаценки,
	|	ЗаказыПокупателейОстатки.ПроцентАвтоматическихСкидок,
	|	ЗаказыПокупателейОстатки.УсловиеАвтоматическойСкидки,
	|	ЗаказыПокупателейОстатки.ЗначениеУсловияАвтоматическойСкидки,
	|	ЗаказыПокупателейОстатки.СтавкаНДС,
	|	" + Знак + "ЗаказыПокупателейОстатки.КоличествоОстаток          КАК Количество,
	|	" + Знак + "ЗаказыПокупателейОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетов,
	|	" + Знак + "ЗаказыПокупателейОстатки.СуммаУпрОстаток            КАК СуммаУпр,
	|	ВЫБОР КОГДА ЗаказыПокупателейОстатки.СтатусПартии = ЗНАЧЕНИЕ(Перечисление.СтатусыПартийТоваров.ВозвратнаяТара)
	|		ТОГДА 0
	|		ИНАЧЕ " + Знак + "ЗаказыПокупателейОстатки.СуммаВзаиморасчетовОстаток
	|	КОНЕЦ КАК СуммаВзаиморасчетовБезТары,
	|	ВЫБОР КОГДА ЗаказыПокупателейОстатки.СтатусПартии = ЗНАЧЕНИЕ(Перечисление.СтатусыПартийТоваров.ВозвратнаяТара)
	|		ТОГДА 0
	|		ИНАЧЕ " + Знак + "ЗаказыПокупателейОстатки.СуммаУпрОстаток
	|	КОНЕЦ КАК СуммаУпрБезТары
	|ИЗ
	|	РегистрНакопления.ЗаказыПокупателей.Остатки(&МоментДокумента, ЗаказПокупателя В (&СписокЗаказов)) КАК ЗаказыПокупателейОстатки
	|Упорядочить по
	|	ДоговорКонтрагента,
	|	ЗаказПокупателя,
	|	Номенклатура,
	|	ХарактеристикаНоменклатуры,
	|	СтатусПартии, 
	|	Цена,
	|	ЕдиницаИзмерения,
	|	ПроцентСкидкиНаценки,
	|	ПроцентАвтоматическихСкидок,
	|	УсловиеАвтоматическойСкидки,
	|	ЗначениеУсловияАвтоматическойСкидки,
	|	СтавкаНДС
	|";*/
			return null;
		}
		//Подготовка таблицы для формирования движений по регистру ЗаказыПоставщикам
		//
		// Параметры:
		//		ДокСсылка - ссылка на документ
		//		МоментВремени - момент времени документа для определения остатков
		//		СписокЗаказов - массив заказов для отбора

		public object ПодготовитьТаблицуДляЗакрытияЗаказовПоставщикам(/*ДокСсылка,МоментВремени,СписокЗаказов, Знак = ""*/)
		{
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("ДокументСсылка",            ДокСсылка);
			//Запрос.УстановитьПараметр("МоментДокумента",           МоментВремени);
			//Запрос.УстановитьПараметр("СписокЗаказов",             СписокЗаказов);
			/*Запрос.Текст = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|    ДоговорКонтрагента,
	|    ЗаказПоставщику,
	|    Номенклатура,
	|    ХарактеристикаНоменклатуры,
	|    СтатусПартии,
	|    Цена,
	|    СтавкаНДС,
	|    ЕдиницаИзмерения,
	|    " + Знак + "КоличествоОстаток          КАК Количество,
	|    " + Знак + "СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетов,
	|    " + Знак + "СуммаУпрОстаток            КАК СуммаУпр
	|ИЗ
	|    РегистрНакопления.ЗаказыПоставщикам.Остатки(&МоментДокумента, ЗаказПоставщику В (&СписокЗаказов))
	|Упорядочить по
	|    ДоговорКонтрагента,
	|    ЗаказПоставщику,
	|    Номенклатура,
	|    ХарактеристикаНоменклатуры,
	|    СтатусПартии,
	|    Цена,
	|    СтавкаНДС,
	|    ЕдиницаИзмерения
	|";*/
			return null;
		}
		//Подготовка таблицы для формирования движений по регистру РасчетыСКонтрагентами
		//
		// Параметры:
		//		МоментВремени - момент времени документа для определения остатков
		//		СписокЗаказов - массив заказов для отбора

		public object ПодготовитьТаблицуДляЗакрытияРасчетов(/*МоментВремени,СписокЗаказов, Множитель=1*/)
		{
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("МоментДокумента",           МоментВремени);
			//Запрос.УстановитьПараметр("СписокЗаказов",             СписокЗаказов);
			//Запрос.УстановитьПараметр("Множитель",             	   Множитель);
			/*Запрос.Текст = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|    ДоговорКонтрагента,
	|    Контрагент,
	|    Организация,
	|    Сделка,
	|    РасчетыВозврат,
	|    &Множитель * СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетов,
	|    &Множитель * СуммаУпрОстаток            КАК СуммаУпр
	|ИЗ
	|    РегистрНакопления.РасчетыСКонтрагентами.Остатки(&МоментДокумента, Сделка В (&СписокЗаказов))
	|Упорядочить по
	|    ДоговорКонтрагента,
	|    Контрагент,
	|    Организация,
	|    Сделка,
	|    РасчетыВозврат
	|";*/
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ ПОЛУЧЕНИЕ ОСТАТКА ПО ЗАКАЗУ
		// Функция формирует таблицу содержащую остатки товаров (неотгруженные товары) по заказу покупателя
		//
		//	Параметры:
		//		Заказ - заказ покупателя, остатки по которому требуется получить
		//		Дата  - дата на которую надо получить остатки
		//	Возврат:
		//		Таблица с остатками, со следующей структурой:
		//			Номенклатура               - товар,
		//			ХарактеристикаНоменклатуры - хар-ка товара,
		//			Цена                       - цена
		//			КолОстаток                 - количество неотгруженного товара по заказу
		//			ПроцентСкидкиНаценки       - % скидки / наценки
		//			ЕдиницаИзмерения           - ед. изм. товаров в заказе
		//			Коэффициент                - коэфф. ед. измерения товара в заказе
		//

		public object ОстаткиТоваровПоЗаказуПокупателя(/* Заказ, Договор, КонДата, Знач СтатусПартии = Неопределено*/)
		{
			if(true/*СтатусПартии = Неопределено*/)
			{
				//СтатусПартии = Перечисления.СтатусыПартийТоваров.Купленный;
			}
			/*ТекстЗапроса = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	РегЗаказы.Номенклатура КАК Номенклатура,
	|	РегЗаказы.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	|	РегЗаказы.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
	|	РегЗаказы.ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок,
	|	РегЗаказы.УсловиеАвтоматическойСкидки КАК УсловиеАвтоматическойСкидки,
	|	РегЗаказы.ЗначениеУсловияАвтоматическойСкидки КАК ЗначениеУсловияАвтоматическойСкидки,
	|	РегЗаказы.Цена КАК Цена,
	|	РегЗаказы.ЕдиницаИзмерения,
	|	РегЗаказы.ЕдиницаИзмерения.Коэффициент КАК Коэффициент,
	|	СУММА(РегЗаказы.КоличествоОстаток) КАК КолОстаток,
	|	РегЗаказы.СтавкаНДС КАК СтавкаНДС,
	|	РегЗаказы.Номенклатура.Комплект КАК Комплект
	|ИЗ
	|	РегистрНакопления.ЗаказыПокупателей.Остатки(&КонДата, ЗаказПокупателя = &Заказ 
	|	                                                    И ДоговорКонтрагента = &Договор 
	|	                                                    И СтатусПартии = &Статус
	|	                                                    И Не Номенклатура.Услуга) КАК РегЗаказы
	|
	|СГРУППИРОВАТЬ ПО
	|	РегЗаказы.Номенклатура,
	|	РегЗаказы.ХарактеристикаНоменклатуры,
	|	РегЗаказы.ПроцентСкидкиНаценки,
	|	РегЗаказы.ПроцентАвтоматическихСкидок,
	|	РегЗаказы.УсловиеАвтоматическойСкидки,
	|	РегЗаказы.ЗначениеУсловияАвтоматическойСкидки,
	|	РегЗаказы.Цена,
	|	РегЗаказы.ЕдиницаИзмерения,
	|	РегЗаказы.ЕдиницаИзмерения.Коэффициент,
	|	РегЗаказы.СтавкаНДС,
	|	РегЗаказы.Номенклатура.Комплект";*/
			//Запрос = Новый Запрос;
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.УстановитьПараметр( "КонДата", КонДата);
			//Запрос.УстановитьПараметр( "Заказ",   Заказ);
			//Запрос.УстановитьПараметр( "Договор", Договор);
			//Запрос.УстановитьПараметр( "Статус",  СтатусПартии);
			return null;
		}
		// ОстаткиТоваровПоЗаказуПокупателя()
		// Функция формирует таблицу содержащую остатки услуг (неоказанные услуги) по заказу покупателя
		//
		//	Параметры:
		//		Заказ - заказ покупателя, остатки по которому требуется получить
		//		Дата  - дата на которую надо получить остатки
		//	Возврат:
		//		Таблица с остатками, со следующей структурой:
		//			Номенклатура  - товар,
		//			Цена          - цена
		//			КолОстаток    - количество неоказанных услуг по заказу
		//

		public object ОстаткиУслугПоЗаказуПокупателя(/* Заказ, Договор, Знач КонДата, Знач СтатусПартии = Неопределено*/)
		{
			/*ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Остатки.Номенклатура КАК Номенклатура,
	|	МАКСИМУМ(ВЫБОР
	|			КОГДА Док.Содержание ЕСТЬ NULL 
	|				ТОГДА ВЫБОР
	|						КОГДА ДокКорректировка.Содержание ЕСТЬ NULL 
	|							ТОГДА ДокИзменениеЗаказа.Содержание
	|						ИНАЧЕ ДокКорректировка.Содержание
	|					КОНЕЦ
	|			ИНАЧЕ Док.Содержание
	|		КОНЕЦ) КАК Содержание,
	|	Остатки.Цена КАК Цена,
	|	Остатки.СтавкаНДС КАК СтавкаНДС,
	|	Остатки.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
	|	Остатки.ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок,
	|	Остатки.УсловиеАвтоматическойСкидки КАК УсловиеАвтоматическойСкидки,
	|	Остатки.ЗначениеУсловияАвтоматическойСкидки КАК ЗначениеУсловияАвтоматическойСкидки,
	|	СУММА(Остатки.КоличествоОстаток) КАК КолОстаток,
	|	СУММА(Остатки.СуммаВзаиморасчетовОстаток) КАК СуммаВзаиморасчетов,
	|	СУММА(Остатки.СуммаУпрОстаток)            КАК СуммаУпр
	|ИЗ
	|	РегистрНакопления.ЗаказыПокупателей.Остатки(
	|			&КонДата,
	|			ЗаказПокупателя = &Заказ
	|				И Номенклатура.Услуга = ИСТИНА "+?(СтатусПартии=неопределено,"","И СтатусПартии = &Статус")+") КАК Остатки
	|		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
	|			ЗаказПокупателяУслуги.Номенклатура КАК Номенклатура,
	|			МИНИМУМ(ВЫРАЗИТЬ(ЗаказПокупателяУслуги.Содержание КАК СТРОКА(1000))) КАК Содержание
	|		ИЗ
	|			Документ.ЗаказПокупателя.Услуги КАК ЗаказПокупателяУслуги
	|		ГДЕ
	|			ЗаказПокупателяУслуги.Ссылка = &Заказ
	|		
	|		СГРУППИРОВАТЬ ПО
	|			ЗаказПокупателяУслуги.Номенклатура) КАК Док
	|		ПО (Док.Номенклатура = Остатки.Номенклатура)
	|		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
	|			КорректировкаЗаказаПокупателяУслуги.Номенклатура КАК Номенклатура,
	|			МИНИМУМ(ВЫРАЗИТЬ(КорректировкаЗаказаПокупателяУслуги.Содержание КАК СТРОКА(1000))) КАК Содержание
	|		ИЗ
	|			Документ.КорректировкаЗаказаПокупателя.Услуги КАК КорректировкаЗаказаПокупателяУслуги
	|		ГДЕ
	|			КорректировкаЗаказаПокупателяУслуги.Ссылка.ЗаказПокупателя = &Заказ
	|		
	|		СГРУППИРОВАТЬ ПО
	|			КорректировкаЗаказаПокупателяУслуги.Номенклатура) КАК ДокКорректировка
	|		ПО (ДокКорректировка.Номенклатура = Остатки.Номенклатура)
	|		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
	|			ИзменениеЗаказаПокупателяУслуги.Номенклатура КАК Номенклатура,
	|			МИНИМУМ(ВЫРАЗИТЬ(ИзменениеЗаказаПокупателяУслуги.Содержание КАК СТРОКА(1000))) КАК Содержание
	|		ИЗ
	|			Документ.ИзменениеЗаказаПокупателя.Услуги КАК ИзменениеЗаказаПокупателяУслуги
	|		ГДЕ
	|			ИзменениеЗаказаПокупателяУслуги.Ссылка.ЗаказПокупателя = &Заказ
	|		
	|		СГРУППИРОВАТЬ ПО
	|			ИзменениеЗаказаПокупателяУслуги.Номенклатура) КАК ДокИзменениеЗаказа
	|		ПО (ДокИзменениеЗаказа.Номенклатура = Остатки.Номенклатура)
	|
	|СГРУППИРОВАТЬ ПО
	|	Остатки.Номенклатура,
	|	Остатки.Цена,
	|	Остатки.ПроцентСкидкиНаценки,
	|	Остатки.СтавкаНДС,
	|	Остатки.ПроцентАвтоматическихСкидок,
	|	Остатки.УсловиеАвтоматическойСкидки,
	|	Остатки.ЗначениеУсловияАвтоматическойСкидки
	|
	|ИМЕЮЩИЕ
	|	СУММА(Остатки.КоличествоОстаток) > 0";*/
			//Запрос = Новый Запрос;
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.УстановитьПараметр( "КонДата", КонДата);
			//Запрос.УстановитьПараметр( "Заказ",   Заказ);
			//Запрос.УстановитьПараметр( "Договор", Договор);
			//Запрос.УстановитьПараметр( "Статус",  СтатусПартии);
			return null;
		}
		// ОстаткиУслугПоЗаказуПокупателя()
		// Функция формирует таблицу содержащую остатки товаров (неотгруженные товары) по заказу поставщику
		//
		//	Параметры:
		//		Заказ - заказ поставщику, остатки по которому требуется получить
		//		Дата  - дата на которую надо получить остатки
		//	Возврат:
		//		Таблица с остатками, со следующей структурой:
		//			Номенклатура               - товар,
		//			ХарактеристикаНоменклатуры - хар-ка товара,
		//			Цена                       - цена
		//			КолОстаток                 - количество неотгруженного товара по заказу
		//			ПроцентСкидкиНаценки       - % скидки / наценки
		//			ЕдиницаИзмерения           - ед. изм. товаров в заказе
		//			Коэффициент                - коэфф. ед. измерения товара в заказе
		//

		public object ОстаткиТоваровПоЗаказуПоставщику(/* Заказ, Договор, КонДата, ДопПараметры = Неопределено*/)
		{
			//ТоварТара    = Перечисления.ТоварТара.Товар;
			//СтатусПартии = Перечисления.СтатусыПартийТоваров.Купленный;
			if(true/*Не ДопПараметры = Неопределено*/)
			{
				if(true/*ДопПараметры.Свойство("ТоварТара")*/)
				{
					//ТоварТара = ДопПараметры["ТоварТара"];
				}
				if(true/*ДопПараметры.Свойство("СтатусПартии")*/)
				{
					//СтатусПартии = ДопПараметры["СтатусПартии"];
				}
			}
			/*ТекстЗапроса =
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	1 КАК Источник,
		|	РегЗаказы.Номенклатура КАК Номенклатура,
		|	РегЗаказы.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
		|	РегЗаказы.Цена,
		|	РегЗаказы.СтавкаНДС,
		|	РегЗаказы.ЕдиницаИзмерения,
		|	РегЗаказы.ЕдиницаИзмерения.Коэффициент КАК Коэффициент,
		|	РегЗаказы.КоличествоОстаток * РегЗаказы.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / РегЗаказы.ЕдиницаИзмерения.Коэффициент  КАК КолОстаток,
		|	НЕОПРЕДЕЛЕНО КАК ЗаказПокупателя,
		|	0 КАК КолРазмещено
		|ИЗ
		|	РегистрНакопления.ЗаказыПоставщикам.Остатки(
		|		&КонДата,
		|		ДоговорКонтрагента = &Договор
		|		    И ЗаказПоставщику = &Заказ
		|		    И (НЕ Номенклатура.Услуга)
		|		    И СтатусПартии = &Статус) КАК РегЗаказы
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	2,
		|	РегРазмещениеЗаказов.Номенклатура,
		|	РегРазмещениеЗаказов.ХарактеристикаНоменклатуры,
		|	0,
		|	НЕОПРЕДЕЛЕНО,
		|	РегРазмещениеЗаказов.Номенклатура.ЕдиницаХраненияОстатков,
		|	РегРазмещениеЗаказов.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент,
		|	0,
		|	РегРазмещениеЗаказов.ЗаказПокупателя,
		|	РегРазмещениеЗаказов.КоличествоОстаток
		|ИЗ
		|	РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки(
		|		&КонДата,
		|		ЗаказПоставщику = &Заказ
		|		    И ТоварТара = &ТоварТара) КАК РегРазмещениеЗаказов
		|
		|УПОРЯДОЧИТЬ ПО
		|	Источник
		|ИТОГИ
		|	СУММА(КолОстаток),
		|	СУММА(КолРазмещено)
		|ПО
		|	Номенклатура,
		|	ХарактеристикаНоменклатуры";*/
			//Запрос = Новый Запрос;
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.УстановитьПараметр( "КонДата",   КонДата);
			//Запрос.УстановитьПараметр( "Заказ",     Заказ);
			//Запрос.УстановитьПараметр( "Договор",   Договор);
			//Запрос.УстановитьПараметр( "Статус",    СтатусПартии);
			//Запрос.УстановитьПараметр( "ТоварТара", ТоварТара);
			return null;
		}
		// ОстаткиТоваровПоЗаказуПоставщику()
		// Функция формирует таблицу содержащую остатки услуг (неоказанные услуги) по заказу поставщику
		//
		//	Параметры:
		//		Заказ - заказ покупателя, остатки по которому требуется получить
		//		Дата  - дата на которую надо получить остатки
		//	Возврат:
		//		Таблица с остатками, со следующей структурой:
		//			Номенклатура  - товар,
		//			Цена          - цена
		//			КолОстаток    - количество неоказанных услуг по заказу
		//

		public object ОстаткиУслугПоЗаказуПоставщику(/* Заказ, Договор, Знач КонДата, Знач СтатусПартии = Неопределено, ДопПараметры = Неопределено*/)
		{
			if(true/*СтатусПартии = Неопределено*/)
			{
				//СтатусПартии = Перечисления.СтатусыПартийТоваров.Купленный;
			}
			//СтрокаВыборкиПоляСодержанияДокЗаказУслуги = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("ДокЗаказУслуги");
			//СтрокаВыборкиПоляСодержанияДокКорректировкаУслуги = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("ДокКорректировкаУслуги");
			/*ТекстЗапроса = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	РегЗаказы.Номенклатура КАК Номенклатура,
	|	РегЗаказы.Цена,
	|	СУММА(РегЗаказы.КоличествоОстаток)          КАК КолОстаток,
	|	СУММА(РегЗаказы.СуммаВзаиморасчетовОстаток) КАК СуммаВзаиморасчетов,
	|	СУММА(РегЗаказы.СуммаУпрОстаток)            КАК СуммаУпр,
	|	ДокЗаказ.Содержание                         КАК Содержание,
	|	ДокЗаказ.СтавкаНДС
	|ИЗ
	|	(ВЫБРАТЬ
	|		ДокЗаказы.Номенклатура КАК Номенклатура,
	|		ДокЗаказы.Цена         КАК Цена,
	|		ДокЗаказы.Содержание   КАК Содержание,
	|		ДокЗаказы.СтавкаНДС    КАК СтавкаНДС
	|	ИЗ
	|		(ВЫБРАТЬ
	|			ДокЗаказУслуги.Номенклатура КАК Номенклатура,
	|			ДокЗаказУслуги.Цена         КАК Цена,
	|			" + СтрокаВыборкиПоляСодержанияДокЗаказУслуги + "   КАК Содержание,
	|			ДокЗаказУслуги.СтавкаНДС    КАК СтавкаНДС
	|		ИЗ
	|			Документ.ЗаказПоставщику.Услуги КАК ДокЗаказУслуги
	|		
	|		ГДЕ
	|			ДокЗаказУслуги.Ссылка = &Заказ     И
	|			ДокЗаказУслуги.Ссылка.Проведен     И
	|			ДокЗаказУслуги.Номенклатура.Услуга И
	|			НЕ ДокЗаказУслуги.Ссылка.ПометкаУдаления
	|		
	|		ОБЪЕДИНИТЬ ВСЕ
	|		
	|		ВЫБРАТЬ
	|			ДокКорректировкаУслуги.Номенклатура,
	|			ДокКорректировкаУслуги.Цена,
	|			" + СтрокаВыборкиПоляСодержанияДокКорректировкаУслуги + ",
	|			ДокКорректировкаУслуги.СтавкаНДС
	|		ИЗ
	|			Документ.КорректировкаЗаказаПоставщику.Услуги КАК ДокКорректировкаУслуги
	|		
	|		ГДЕ
	|			ДокКорректировкаУслуги.Ссылка.ЗаказПоставщику = &Заказ И
	|			ДокКорректировкаУслуги.Номенклатура.Услуга             И
	|			ДокКорректировкаУслуги.Ссылка.Проведен                 И
	|			НЕ ДокКорректировкаУслуги.Ссылка.ПометкаУдаления) КАК ДокЗаказы
	|	СГРУППИРОВАТЬ ПО
	|		ДокЗаказы.Номенклатура,
	|		ДокЗаказы.Цена,
	|		ДокЗаказы.Содержание,
	|		ДокЗаказы.СтавкаНДС	
	|		) КАК ДокЗаказ
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&КонДата, ДоговорКонтрагента = &Договор И ЗаказПоставщику = &Заказ И СтатусПартии = &Статус) КАК РегЗаказы
	|		ПО ДокЗаказ.Номенклатура = РегЗаказы.Номенклатура
	|		 И ДокЗаказ.Цена = РегЗаказы.Цена
	|
	|СГРУППИРОВАТЬ ПО
	|	РегЗаказы.Номенклатура,
	|	РегЗаказы.Цена,
	|	ДокЗаказ.Содержание,
	|	ДокЗаказ.СтавкаНДС";*/
			//Запрос = Новый Запрос;
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.УстановитьПараметр( "КонДата", КонДата);
			//Запрос.УстановитьПараметр( "Заказ",   Заказ);
			//Запрос.УстановитьПараметр( "Договор", Договор);
			//Запрос.УстановитьПараметр( "Статус",  СтатусПартии);
			return null;
		}
		// ОстаткиУслугПоЗаказуПоставщику()
		// Функция формирует таблицу содержащую остатки оборудования (неотгруженное оборудование) по заказу поставщику
		//
		//	Параметры:
		//		Заказ - заказ покупателя, остатки по которому требуется получить
		//		Дата  - дата на которую надо получить остатки
		//	Возврат:
		//		Таблица с остатками, со следующей структурой:
		//			Номенклатура  - товар,
		//			Цена          - цена
		//			КолОстаток    - количество неоказанных услуг по заказу
		//

		public object ОстаткиОборудованияПоЗаказуПоставщику(/* Заказ, Договор, Знач КонДата, Знач СтатусПартии = Неопределено, ДопПараметры = Неопределено*/)
		{
			if(true/*СтатусПартии = Неопределено*/)
			{
				//СтатусПартии = Перечисления.СтатусыПартийТоваров.Оборудование;
			}
			/*ТекстЗапроса = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	РегЗаказы.Номенклатура                 КАК Номенклатура,
	|	РегЗаказы.ХарактеристикаНоменклатуры   КАК ХарактеристикаНоменклатуры,
	|	РегЗаказы.Цена 						   КАК Цена,
	|	РегЗаказы.ЕдиницаИзмерения             КАК ЕдиницаИзмерения,
	|	СУММА(РегЗаказы.КоличествоОстаток * РегЗаказы.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / РегЗаказы.ЕдиницаИзмерения.Коэффициент)     КАК КолОстаток,
	|	РегЗаказы.СтавкаНДС       			   КАК СтавкаНДС


	|ИЗ
	|	РегистрНакопления.ЗаказыПоставщикам.Остатки(&КонДата, ЗаказПоставщику = &Заказ 
	|	                                                    И ДоговорКонтрагента = &Договор 
	|	                                                    И СтатусПартии = &Статус) КАК РегЗаказы
	|
	|СГРУППИРОВАТЬ ПО
	|	РегЗаказы.Номенклатура,
	|	РегЗаказы.ХарактеристикаНоменклатуры,
	|	РегЗаказы.Цена,
	|	РегЗаказы.ЕдиницаИзмерения,
	|	РегЗаказы.СтавкаНДС";*/
			//Запрос = Новый Запрос;
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.УстановитьПараметр( "КонДата", КонДата);
			//Запрос.УстановитьПараметр( "Заказ",   Заказ);
			//Запрос.УстановитьПараметр( "Договор", Договор);
			//Запрос.УстановитьПараметр( "Статус",  СтатусПартии);
			return null;
		}
		// ОстаткиОборудованияПоЗаказуПоставщику()
		// Функция формирует таблицу содержащую остатки товаров (неотгруженные товары) по заказу покупателя
		//
		//	Параметры:
		//		Заказ - заказ покупателя, остатки по которому требуется получить
		//		Дата  - дата на которую надо получить остатки
		//	Возврат:
		//		Таблица с остатками, со следующей структурой:
		//			Номенклатура               - товар,
		//			ХарактеристикаНоменклатуры - хар-ка товара,
		//			КолОстаток                 - количество неотгруженного товара по заказу
		//			ЕдиницаИзмерения           - ед. изм. товаров в заказе
		//			Коэффициент                - коэфф. ед. измерения товара в заказе
		//

		public object ОстаткиТоваровПоВнутреннемуЗаказу(/* Заказ, Знач КонДата, СтатусыПартий = Неопределено*/)
		{
			/*ТекстЗапроса = "
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ВнутренниеЗаказыОстатки.Номенклатура                         КАК Номенклатура,
	|	ВнутренниеЗаказыОстатки.ХарактеристикаНоменклатуры           КАК ХарактеристикаНоменклатуры,
	|	СУММА(ВнутренниеЗаказыОстатки.КоличествоОстаток)             КАК КолОстаток,
	|	ВнутренниеЗаказыОстатки.Номенклатура.СтавкаНДС               КАК СтавкаНДС,
	|	ВнутренниеЗаказыОстатки.ЕдиницаИзмерения                     КАК ЕдиницаИзмерения,
	|	ВнутренниеЗаказыОстатки.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХранения,
	|	ВнутренниеЗаказыОстатки.ЕдиницаИзмерения.Коэффициент         КАК Коэффициент,
	|	ВнутренниеЗаказыОстатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК ЕдиницаХраненияКоэффициент,
	|	ВнутренниеЗаказыОстатки.СтатусПартии                         КАК СтатусПартии,
	|	ВнутренниеЗаказыОстатки.ВнутреннийЗаказ                      КАК Заказ,
	|	ВнутренниеЗаказыОстатки.Заказчик                             КАК Заказчик   
	|ИЗ
	|	РегистрНакопления.ВнутренниеЗаказы.Остатки(&КонДата, ВнутреннийЗаказ = &Заказ И СтатусПартии В (&СтатусыПартий)) КАК ВнутренниеЗаказыОстатки
	|
	|СГРУППИРОВАТЬ ПО
	|	ВнутренниеЗаказыОстатки.Номенклатура,
	|	ВнутренниеЗаказыОстатки.ХарактеристикаНоменклатуры,
	|	ВнутренниеЗаказыОстатки.ЕдиницаИзмерения,
	|	ВнутренниеЗаказыОстатки.СтатусПартии,
	|	ВнутренниеЗаказыОстатки.ВнутреннийЗаказ,
	|	ВнутренниеЗаказыОстатки.Заказчик";*/
			//Запрос = Новый Запрос;
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.УстановитьПараметр( "КонДата", КонДата);
			//Запрос.УстановитьПараметр( "Заказ",   Заказ);
			if(true/*СтатусыПартий = Неопределено*/)
			{
				//Статусы = Новый Массив;
				//Статусы.Добавить(Перечисления.СтатусыПартийТоваров.Купленный);
			}
			//Запрос.УстановитьПараметр( "СтатусыПартий", Статусы);
			return null;
		}
		// ОстаткиТоваровПоВнутреннемуЗаказу()
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ ПОГАШЕНИЯ РЕГИСТРОВ ЗАКАЗЫ
		// Функция определяет наличие товара в остатках по внутреннему заказу
		//
		//	Параметры:
		//		ТабПроверки - содержит данные, по которым производится проверка
		//		Дата        - дата на которую производится проверка
		//	Возврат:
		//		Булево - результат проверки на наличие товара в остатках
		//

		public object ПолучитьОстатокПоВнутреннемуЗаказу(/* Заказ, Количество, Товар, Характеристика = Неопределено, ЕдиницаИзмерения,
                                               СтатусПартии = Неопределено*/)
		{
			if(true/*СтатусПартии = Неопределено*/)
			{
				//СтатусПартии = Перечисления.СтатусыПартийТоваров.Купленный;
			}
			if(true/*НЕ Характеристика = Неопределено*/)
			{
				//ЕстьХарактеристика = Истина;
			}
			/*ТекстЗапроса = "
	|ВЫБРАТЬ
	|	СУММА(ВнутренниеЗаказыОстатки.КоличествоОстаток) КАК КоличествоОстаток
	|ИЗ
	|	РегистрНакопления.ВнутренниеЗаказы.Остатки(, ВнутреннийЗаказ = &Заказ И СтатусПартии = &СтатусПартии
	//|		И Номенклатура = &Товар И ЕдиницаИзмерения = &ЕдИзм " + ?(ЕстьХарактеристика, "И ХарактеристикаНоменклатуры = &Характеристика", "") + ") КАК ВнутренниеЗаказыОстатки
	|		И Номенклатура = &Товар " + ?(ЕстьХарактеристика, "И ХарактеристикаНоменклатуры = &Характеристика", "") + ") КАК ВнутренниеЗаказыОстатки
	|
	|СГРУППИРОВАТЬ ПО
	|	ВнутренниеЗаказыОстатки.Номенклатура,
	|	ВнутренниеЗаказыОстатки.ХарактеристикаНоменклатуры,
	|	ВнутренниеЗаказыОстатки.СтатусПартии,
	|	ВнутренниеЗаказыОстатки.ВнутреннийЗаказ";*/
			//Запрос = Новый Запрос;
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.УстановитьПараметр( "Заказ",          Заказ);
			//Запрос.УстановитьПараметр( "Товар",          Товар);
			//Запрос.УстановитьПараметр( "СтатусПартии",   СтатусПартии);
			//Запрос.УстановитьПараметр( "Характеристика", Характеристика);
			//Запрос.УстановитьПараметр( "ЕдИзм",          ЕдиницаИзмерения);
			//Обход = Запрос.Выполнить().Выбрать();
			//Результат = 0;
			while(true/*Обход.Следующий()*/)
			{
				if(true/*Обход.КоличествоОстаток > 0*/)
				{
					//Результат = Обход.КоличествоОстаток;
				}
			}
			return null;
		}
		// ПолучитьОстатокПоВнутреннемуЗаказу()
		// Процедура погашения регистра ВнутренниеЗаказы
		//

		public void ДвижениеПоВнутреннимЗаказам(/* ДокОбъект, ТабИсходная, ДопПараметры, Отказ, Заголовок*/)
		{
			//ТабПоЗаказам = ТабИсходная.Скопировать();
			//СтатусПартии       = ДопПараметры["СтатусПартии"];
			//ЕстьХарактеристика = Не ТабИсходная.Колонки.Найти("ХарактеристикаНоменклатуры") = Неопределено;
			//ЕстьЕдИзм          = Не ТабИсходная.Колонки.Найти("ЕдиницаИзмерения")           = Неопределено;
			//ЗаказВШапке        = ДопПараметры["ЗаказВШапке"];
			//ИмяРеквизитаЗаказ  = ДопПараметры["ИмяРеквизитаЗаказ"];
			if(true/*Не ЗаказВШапке*/)
			{
				//ВсегоСтрок = ТабПоЗаказам.Количество() - 1;
				//К = 0;
				while(true/*К <= ВсегоСтрок*/)
				{
					//ДокЗаказ = ТабПоЗаказам[К][ИмяРеквизитаЗаказ];
					if(true/*НЕ ЗначениеЗаполнено(ДокЗаказ) ИЛИ ТипЗнч(ДокЗаказ) <> Тип("ДокументСсылка.ВнутреннийЗаказ")*/)
					{
						//ТабПоЗаказам.Удалить(К);
						//ВсегоСтрок = ВсегоСтрок - 1;
					}
				}
				//;;
			}
			if(true/*НЕ ТабПоЗаказам.Количество() > 0*/)
			{
			}
			//НаборДвижений = ДокОбъект.Движения.ВнутренниеЗаказы;
			//НаборДвижений.КонтрольОстатков(ДокОбъект, ДопПараметры, Отказ, Заголовок, ДопПараметры.РежимПроведения);
			if(true/*Отказ*/)
			{
			}
			//ТаблицаДвижений = НаборДвижений.Выгрузить();
			//ТаблицаДвижений.Очистить();
			//НаборДвижений.мПериод          = ДокОбъект.Дата;
			//НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;
			//НаборДвижений.ВыполнитьРасход();
		}
		// ДвижениеПоВнутреннимЗаказам( СтруктураШапкиДокумента, ТаблицаПоТаре,    Отказ, Заголовок)
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ ЗАПОЛНЕНИЯ ОСТАТКАМИ ПО ЗАКАЗУ
		// Процедура заполняет табличную часть документа по данным заказа
		//
		//	Параметры:
		//		ТабЧасть - табличная часть документа, которую необходимо заполнить
		//		ТабОстатки - таблица неотгружененых товаров по заказу
		//

		public void ЗаполнитьТабЧастьТоварыПоЗаказу(/*ДокСсылка, ТабЧасть, Заказ, ТабОстатки, ДопПараметры = Неопределено, ОчищатьСтроки = Ложь*/)
		{
			if(true/*ОчищатьСтроки = Истина*/)
			{
				//ТабЧасть.Очистить();
			}
			if(true/*ТабОстатки.Количество() = 0*/)
			{
			}
			//ФлагУчитыватьСоставНабора = Ложь;
			//ФлагУчитыватьНДС          = Истина;
			//ФлагСуммаВключаетНДС      = Ложь;
			if(true/*Не ДопПараметры = Неопределено*/)
			{
				if(true/*ДопПараметры.Свойство("УчитыватьНДС")*/)
				{
					//ФлагУчитыватьНДС = ДопПараметры["УчитыватьНДС"];
				}
				if(true/*ДопПараметры.Свойство("СуммаВключаетНДС")*/)
				{
					//ФлагСуммаВключаетНДС = ДопПараметры["СуммаВключаетНДС"];
				}
				if(true/*ДопПараметры.Свойство("УчитыватьСоставНабора")*/)
				{
					//ФлагУчитыватьСоставНабора = Истина;
				}
			}
			//ФлагЕстьРучнаяСкидка = Не ТабОстатки.Колонки.Найти("ПроцентСкидкиНаценки") = Неопределено;
			//ФлагЕстьАвтоматическаяСкидка = Не ТабОстатки.Колонки.Найти("ПроцентАвтоматическихСкидок") = Неопределено;
			//МетаТабЧасть      = Метаданные.НайтиПоТипу(Тип(ТабЧасть)).Реквизиты;
			//ФлагЕстьЦена      = Не МетаТабЧасть.Найти("Цена")      = Неопределено;
			//ФлагЕстьСтавкаНДС = Не МетаТабЧасть.Найти("СтавкаНДС") = Неопределено;
			//ИмяРеквизитаЗаказ = "ЗаказПокупателя";
			if(true/*МетаТабЧасть.Найти("Заказ")<>неопределено*/)
			{
				//ИмяРеквизитаЗаказ = "Заказ";
			}
		}
		// ЗаполнитьТабЧастьТоварыПоЗаказу()
		// Процедура заполняет табличную часть документа по данным заказа поставщику
		//
		//	Параметры:
		//		ДокОбъект  - документ-объект, который надо заполнить
		//		ТабЧасть   - табличная часть документа, которую необходимо заполнить
		//		ТабОстатки - таблица неотгружененых товаров по заказу
		//

		public void ЗаполнитьТабЧастьТоварыПоЗаказуПоставщику(/*ДокОбъект, ТабЧасть, ТабОстатки, ДопПараметры = Неопределено*/)
		{
			if(true/*ТабОстатки.Пустой()*/)
			{
			}
			//ТабЧасть.Очистить();
			//ИмяРеквизитаЗаказ = "ЗаказПокупателя";
			//ТЗ = ТабЧасть.Выгрузить();
			if(true/*ТЗ.Колонки.Найти("Заказ")<>неопределено*/)
			{
				//ИмяРеквизитаЗаказ = "Заказ";
			}
			//ФлагУчитыватьНДС     = Истина;
			//ФлагСуммаВключаетНДС = Ложь;
			//ФлагЭтоТара          = Ложь;
			//ЗнакКоличества       = 1;
			if(true/*Не ДопПараметры = Неопределено*/)
			{
				if(true/*ДопПараметры.Свойство("УчитыватьНДС")*/)
				{
					//ФлагУчитыватьНДС = ДопПараметры["УчитыватьНДС"];
				}
				if(true/*ДопПараметры.Свойство("СуммаВключаетНДС")*/)
				{
					//ФлагСуммаВключаетНДС = ДопПараметры["СуммаВключаетНДС"];
				}
				if(true/*ДопПараметры.Свойство("ФлагЭтоТара")*/)
				{
					//ФлагЭтоТара = ДопПараметры["ФлагЭтоТара"];
				}
				if(true/*ДопПараметры.Свойство("ЗнакКоличества")*/)
				{
					//ЗнакКоличества = ДопПараметры["ЗнакКоличества"];
				}
			}
			//РезультатЗапроса = ТабОстатки;
			//СоотвСтрок     = Новый Соответствие;
			//МассивОстатков = Новый Массив;
			//ОбходНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			while(true/*ОбходНоменклатура.Следующий()*/)
			{
				//ОбходХарактеристика = ОбходНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
				while(true/*ОбходХарактеристика.Следующий()*/)
				{
					//МассивОстатков.Очистить();
					//Обход = ОбходХарактеристика.Выбрать();
					while(true/*Обход.Следующий()*/)
					{
						if(true/*Обход.Источник = 1*/)
						{
							/*// Это строка с остатком. Добавляем в документ
*/
							//НоваяСтрока = ТабЧасть.Добавить();
							//НоваяСтрока.Номенклатура = Обход.Номенклатура;
							//НоваяСтрока.Цена         = Обход.Цена;
							//НоваяСтрока.Количество   = Обход.КолОстаток;
							//МассивОстатков.Добавить(НоваяСтрока);
							//СоотвСтрок.Вставить(НоваяСтрока);
							if(true/*НЕ ФлагЭтоТара*/)
							{
								//НоваяСтрока.ХарактеристикаНоменклатуры = Обход.ХарактеристикаНоменклатуры;
								//НоваяСтрока.ЕдиницаИзмерения = Обход.ЕдиницаИзмерения;
								//НоваяСтрока.Коэффициент      = Обход.Коэффициент;
								//НоваяСтрока.СтавкаНДС        = Обход.СтавкаНДС;
							}
						}
					}
					//;;
				}
				//;;
			}
			if(true/*ЗнакКоличества = -1*/)
			{
			}
		}
		// ЗаполнитьТабЧастьТоварыПоЗаказуПоставщику()
		// Процедура заполняет табличную часть Услуги по данным заказа
		//
		//	Параметры:
		//		ТабЧасть   - табличная часть документа, которую необходимо заполнить
		//		ТабОстатки - таблица неотгружененых товаров по заказу
		//

		public void ЗаполнитьТабЧастьУслугиПоЗаказу(/*ДокОбъект, ТабЧасть, Заказ, ТабОстатки, ДопПараметры = Неопределено, ОчищатьСтроки = Ложь*/)
		{
			if(true/*ОчищатьСтроки = Истина*/)
			{
				//ТабЧасть.Очистить();
			}
			if(true/*ТабОстатки.Количество() = 0*/)
			{
			}
			//ФлагУчитыватьНДС     = Истина;
			//ФлагСуммаВключаетНДС = Ложь;
			//ЗнакКоличества       = 1;
			if(true/*Не ДопПараметры = Неопределено*/)
			{
				if(true/*ДопПараметры.Свойство("УчитыватьНДС")*/)
				{
					//ФлагУчитыватьНДС = ДопПараметры["УчитыватьНДС"];
				}
				if(true/*ДопПараметры.Свойство("СуммаВключаетНДС")*/)
				{
					//ФлагСуммаВключаетНДС = ДопПараметры["СуммаВключаетНДС"];
				}
				if(true/*ДопПараметры.Свойство("ЗнакКоличества")*/)
				{
					//ЗнакКоличества = ДопПараметры["ЗнакКоличества"];
				}
			}
			//ФлагЕстьРучнаяСкидка = Не ТабОстатки.Колонки.Найти("ПроцентСкидкиНаценки") = Неопределено;
			//ФлагЕстьАвтоматическаяСкидка = Не ТабОстатки.Колонки.Найти("ПроцентАвтоматическихСкидок") = Неопределено;
		}
		// ЗаполнитьТабЧастьУслугиПоЗаказу()
		// Процедура заполняет табличную часть Тара данными по заказа
		//
		//		Параметры:
		//			ТабЧасть - табличная часть документа, которую необходимо заполнить
		//			ТабОстатки - таблица неотгружененых товаров по заказу
		//		Возврат:
		//			Истина - заполнение произведено
		//			Ложь   - нет данных для заполнения
		//

		public void ЗаполнитьТабЧастьТараПоЗаказуПокупателя(/*ДокОбъект, ТабЧасть, Заказ, Договор, КонДата, ОчищатьСтроки = Ложь*/)
		{
			if(true/*ОчищатьСтроки = Истина*/)
			{
				//ТабЧасть.Очистить();
			}
			/*ТекстЗапроса = "
	|ВЫБРАТЬ
	|	РегЗаказы.Номенклатура,
	|	РегЗаказы.КоличествоОстаток КАК Количество,
	|	РегЗаказы.СуммаУпрОстаток КАК СуммаУпр,
	|	РегЗаказы.Цена,
	|	РегЗаказы.ЕдиницаИзмерения,
	|	РегЗаказы.ЕдиницаИзмерения.Коэффициент КАК Коэффициент
	|ИЗ
	|	РегистрНакопления.ЗаказыПокупателей.Остатки(&КонДата, ДоговорКонтрагента = &Договор И СтатусПартии = &Статус И ЗаказПокупателя = &Заказ) КАК РегЗаказы
	|
	|ГДЕ
	|	НЕ РегЗаказы.Номенклатура.Услуга И
	|	РегЗаказы.КоличествоОстаток > 0";*/
			//Запрос = Новый Запрос;
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.УстановитьПараметр( "КонДата", КонДата);
			//Запрос.УстановитьПараметр( "Заказ",   Заказ);
			//Запрос.УстановитьПараметр( "Договор", Договор);
			//Запрос.УстановитьПараметр( "Статус",  Перечисления.СтатусыПартийТоваров.ВозвратнаяТара);
			//Обход = Запрос.Выполнить().Выбрать();
			while(true/*Обход.Следующий()*/)
			{
				//НоваяСтрока = ТабЧасть.Добавить();
				//НоваяСтрока.Номенклатура    = Обход.Номенклатура;
				//НоваяСтрока.Количество      = Обход.Количество;
				//НоваяСтрока.Цена            = Обход.Цена;
				//ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти( НоваяСтрока, ДокОбъект);
				//НоваяСтрока.ЗаказПокупателя = Заказ;
			}
			//;;
		}
		// ЗаполнитьТабЧастьТараПоЗаказуПокупателя()
		// Процедура заполняет табличную часть документа по данным внутреннего заказа
		//
		//	Параметры:
		//		ТабЧасть - табличная часть документа, которую необходимо заполнить
		//		ТабОстатки - таблица неотгружененых товаров по заказу
		//

		public void ЗаполнитьТабЧастьТоварыПоВнутреннемуЗаказу(/*ДокСсылка, ТабЧасть, ТабОстатки, ДопПараметры = Неопределено*/)
		{
			if(true/*Не ИспользоватьВнутренниеЗаказы()*/)
			{
			}
			if(true/*ТабОстатки.Количество() = 0*/)
			{
			}
			if(true/*Не ДопПараметры = Неопределено*/)
			{
				if(true/*ДопПараметры.Свойство("НеОчищатьТабЧасть")*/)
				{
					if(true/*Не ДопПараметры["НеОчищатьТабЧасть"]*/)
					{
						//ТабЧасть.Очистить();
					}
				}
			}
			//ЕстьКачество = Не Метаданные.НайтиПоТипу(ТипЗнч(ТабЧасть)).Реквизиты.Найти("Качество") = Неопределено;
		}
		// ЗаполнитьТабЧастьТоварыПоВнутреннемуЗаказу()
		// Процедура формирует таблицу содержащую остатки товаров (неотгруженные товары) по внутреннему заказу
		//

		public void ЗаполнитьОстаткамиТоваровСРезервомПоВнутреннемуЗаказу(/* ЭтотОбъект, Заказ, ТабЧасть, Склад, Знач КонДата, СтатусыПартий = Неопределено*/)
		{
			if(true/*Не ИспользоватьВнутренниеЗаказы()*/)
			{
			}
			/*ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ВнутренниеЗаказыОстатки.Номенклатура                                     КАК Номенклатура,
	|	ВнутренниеЗаказыОстатки.ХарактеристикаНоменклатуры                       КАК ХарактеристикаНоменклатуры,
	|	СУММА(ВнутренниеЗаказыОстатки.КоличествоОстаток)                         КАК КолОстаток,
	|	ВнутренниеЗаказыОстатки.Номенклатура.СтавкаНДС                           КАК СтавкаНДС,
	|	ВнутренниеЗаказыОстатки.Номенклатура.ЕдиницаХраненияОстатков             КАК ЕдиницаИзмерения,
	|	ВЫБОР КОГДА ВнутренниеЗаказыОстатки.ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.ПустаяСсылка) Тогда
	|		ВнутренниеЗаказыОстатки.Номенклатура.ЕдиницаХраненияОстатков
	|	ИНАЧЕ
	|		ВнутренниеЗаказыОстатки.ЕдиницаИзмерения             					 
	|	КОНЕЦ 																	 КАК ЕдиницаИзмеренияЗаказа,
	|	ВЫБОР КОГДА ВнутренниеЗаказыОстатки.ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.ПустаяСсылка) Тогда
	|		ВнутренниеЗаказыОстатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент
	|	ИНАЧЕ
	|		ВнутренниеЗаказыОстатки.ЕдиницаИзмерения.Коэффициент   					 
	|	КОНЕЦ 																	 КАК ЕдиницаИзмеренияЗаказаКоэффициент,
	|	ВнутренниеЗаказыОстатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Коэффициент,
	|	ВнутренниеЗаказыОстатки.СтатусПартии                    				 КАК СтатусПартии,
	|	ВнутренниеЗаказыОстатки.ВнутреннийЗаказ                 				 КАК Заказ,
	|	ВнутренниеЗаказыОстатки.Заказчик                        				 КАК Заказчик,
	|	МАКСИМУМ(ЕстьNull(ТоварыВРезервеПоЗаказуОстатки.КоличествоОстаток,0))	КАК КолРезервПоЗаказу,
	|	МАКСИМУМ(ЕстьNull(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,0))	КАК КолРезерв,
	|	МАКСИМУМ(ЕстьNull(ТоварыНаСкладахОстатки.КоличествоОстаток,0))  		КАК КолНаСкладе

	|ИЗ
	|	РегистрНакопления.ВнутренниеЗаказы.Остатки(&КонДата, ВнутреннийЗаказ = &Заказ И СтатусПартии В (&СтатусыПартий)) КАК ВнутренниеЗаказыОстатки
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&КонДата, Склад = &Склад И ДокументРезерва = &Заказ) КАК ТоварыВРезервеПоЗаказуОстатки
	|		ПО ВнутренниеЗаказыОстатки.Номенклатура = ТоварыВРезервеПоЗаказуОстатки.Номенклатура
	|		 И ВнутренниеЗаказыОстатки.ХарактеристикаНоменклатуры = ТоварыВРезервеПоЗаказуОстатки.ХарактеристикаНоменклатуры
	|	ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&КонДата, Склад = &Склад) КАК ТоварыНаСкладахОстатки
	|		ПО ВнутренниеЗаказыОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
	|		 И ВнутренниеЗаказыОстатки.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
	|	ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&КонДата, Склад = &Склад И ДокументРезерва <> &Заказ) КАК ТоварыВРезервеНаСкладахОстатки
	|		ПО ВнутренниеЗаказыОстатки.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура
	|		 И ВнутренниеЗаказыОстатки.ХарактеристикаНоменклатуры = ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры
	|СГРУППИРОВАТЬ ПО
	|	ВнутренниеЗаказыОстатки.Номенклатура,
	|	ВнутренниеЗаказыОстатки.ХарактеристикаНоменклатуры,
	|	ВнутренниеЗаказыОстатки.СтатусПартии,
	|	ВнутренниеЗаказыОстатки.ВнутреннийЗаказ,
	|	ВнутренниеЗаказыОстатки.Заказчик,
	|	ВнутренниеЗаказыОстатки.ЕдиницаИзмерения
	|	ИМЕЮЩИЕ МАКСИМУМ(ЕстьNull(ТоварыНаСкладахОстатки.КоличествоОстаток,0))>0 И СУММА(ВнутренниеЗаказыОстатки.КоличествоОстаток)>0
	|ИТОГИ Максимум(КолРезервПоЗаказу), Максимум(КолРезерв), Максимум(КолНаСкладе), Сумма(КолОстаток)
	|ПО Номенклатура, ХарактеристикаНоменклатуры, ЕдиницаИзмерения
	|";*/
			//Запрос = Новый Запрос;
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.УстановитьПараметр( "КонДата", КонДата);
			//Запрос.УстановитьПараметр( "Заказ",   Заказ);
			//Запрос.УстановитьПараметр( "Склад",   Склад);
			if(true/*СтатусыПартий = Неопределено*/)
			{
				//Статусы = Новый Массив;
				//Статусы.Добавить(Перечисления.СтатусыПартийТоваров.Купленный);
			}
			//ФлагТары = СтатусыПартий = Перечисления.СтатусыПартийТоваров.ВозвратнаяТара;
			//Запрос.УстановитьПараметр( "СтатусыПартий", Статусы);
			//ЕстьКачество = Не Метаданные.НайтиПоТипу(ТипЗнч(ТабЧасть)).Реквизиты.Найти("Качество") = Неопределено;
			//ЕстьЕдиница  = Не Метаданные.НайтиПоТипу(ТипЗнч(ТабЧасть)).Реквизиты.Найти("ЕдиницаИзмерения") = Неопределено;
			//ВыборкаПоНоменклатуре = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			while(true/*ВыборкаПоНоменклатуре.Следующий()*/)
			{
				//ВыборкаПоХарактеристике = ВыборкаПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
				while(true/*ВыборкаПоХарактеристике.Следующий()*/)
				{
					//ОстатокНаСкладе 		= ВыборкаПоХарактеристике.КолНаСкладе - ВыборкаПоХарактеристике.КолРезерв;
					//ОстатокВРезервеПоЗаказу = ВыборкаПоХарактеристике.КолРезервПоЗаказу;
					if(true/*ОстатокНаСкладе<=0*/)
					{
					}
					//ВыборкаПоЕдиницамИзмерения = ВыборкаПоХарактеристике.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
					while(true/*ВыборкаПоЕдиницамИзмерения.Следующий()*/)
					{
						//Выборка = ВыборкаПоЕдиницамИзмерения.Выбрать();
						while(true/*Выборка.Следующий()*/)
						{
							if(true/*Выборка.КолОстаток <= 0*/)
							{
							}
							if(true/*ОстатокНаСкладе<=0*/)
							{
							}
							//Количество = мин(ОстатокНаСкладе, Выборка.КолОстаток);
							//ВРезерве = Мин(Количество, Макс(ОстатокВРезервеПоЗаказу,0));
							if(true/*ВРезерве>0*/)
							{
								//НоваяСтрока = ТабЧасть.Добавить();
								//ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
								//НоваяСтрока.Количество                   = ВРезерве;
								//НоваяСтрока.ДокументРезерва 			 = Заказ;
								//НоваяСтрока.ВнутреннийЗаказ 			 = Заказ;
								/*//если в таб части есть реквизит ЕДиницаИзмерения - заполним единицу по данным заказа и пересчитаем количество
*/
								if(true/*ЕстьЕдиница*/)
								{
									//НоваяСтрока.ЕдиницаИзмерения = Выборка.ЕдиницаИзмеренияЗаказа;
									//НоваяСтрока.Количество = ВРезерве * Выборка.Коэффициент / Выборка.ЕдиницаИзмеренияЗаказаКоэффициент;
									//НоваяСтрока.Коэффициент = Выборка.ЕдиницаИзмеренияЗаказаКоэффициент;
								}
								if(true/*Не ФлагТары*/)
								{
									if(true/*ЕстьКачество*/)
									{
										//НоваяСтрока.Качество = Справочники.Качество.Новый;
									}
									//ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти( НоваяСтрока, ЭтотОбъект);
								}
								//ОстатокВРезервеПоЗаказу = ОстатокВРезервеПоЗаказу - ВРезерве;
								//ОстатокНаСкладе = ОстатокНаСкладе - ВРезерве;
								//Количество = Количество - ВРезерве;
							}
							if(true/*Количество > 0*/)
							{
								//НоваяСтрока = ТабЧасть.Добавить();
								//ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
								//НоваяСтрока.Количество                   = Количество;
								//НоваяСтрока.ВнутреннийЗаказ 			 = Заказ;
								/*//если в таб части есть реквизит ЕдиницаИзмерения - заполним единицу по данным заказа и пересчитаем количество
*/
								if(true/*ЕстьЕдиница*/)
								{
									//НоваяСтрока.ЕдиницаИзмерения = Выборка.ЕдиницаИзмеренияЗаказа;
									//НоваяСтрока.Количество = Количество * Выборка.Коэффициент / Выборка.ЕдиницаИзмеренияЗаказаКоэффициент;
									//НоваяСтрока.Коэффициент = Выборка.ЕдиницаИзмеренияЗаказаКоэффициент;
								}
								if(true/*Не ФлагТары*/)
								{
									if(true/*ЕстьКачество*/)
									{
										//НоваяСтрока.Качество = Справочники.Качество.Новый;
									}
									//ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти( НоваяСтрока, ЭтотОбъект);
								}
								//ОстатокНаСкладе = ОстатокНаСкладе - Количество;
							}
						}
						//;;
					}
					//;;
				}
				//;;
			}
			//;;
		}
		// ЗаполнитьОстаткамиТоваровСРезервомПоВнутреннемуЗаказу()
		// Процедура заполняет табличную часть Оборудование документа по данным заказа поставщику
		//
		//	Параметры:
		//		ДокОбъект  - документ-объект, который надо заполнить
		//		ТабЧасть   - табличная часть документа, которую необходимо заполнить
		//		ТабОстатки - таблица неотгружененых товаров по заказу
		//

		public void ЗаполнитьТабЧастьОборудованиеПоЗаказуПоставщику(/*ДокОбъект, ТабЧасть, ТабОстатки, ДопПараметры = Неопределено*/)
		{
			if(true/*ТабОстатки.Количество() = 0*/)
			{
			}
			//ТабЧасть.Очистить();
			//ФлагУчитыватьНДС     = Истина;
			//ФлагСуммаВключаетНДС = Ложь;
			//ЗнакКоличества       = 1;
			if(true/*Не ДопПараметры = Неопределено*/)
			{
				if(true/*ДопПараметры.Свойство("УчитыватьНДС")*/)
				{
					//ФлагУчитыватьНДС = ДопПараметры["УчитыватьНДС"];
				}
				if(true/*ДопПараметры.Свойство("СуммаВключаетНДС")*/)
				{
					//ФлагСуммаВключаетНДС = ДопПараметры["СуммаВключаетНДС"];
				}
				if(true/*ДопПараметры.Свойство("ЗнакКоличества")*/)
				{
					//ЗнакКоличества = ДопПараметры["ЗнакКоличества"];
				}
			}
		}
		// ЗаполнитьТабЧастьОборудованиеПоЗаказуПоставщику()
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ РАБОТЫ С АВТОРЕЗЕРВИРОВАНИЕМ И АВТОРАЗМЕЩЕНИЕМ
		// Заполняет табличную часть Заказа покупателя, КорректировкиЗаказаПокупателя, РезервированиеТоваров по сериям при оперативном проведении
		//

		public void ЗаполнитьПоСериям(/*ЗаказПокупателя, Товары, ИмяРеквизитаРазмещение="Размещение", РезервированиеТоваров=ложь*/)
		{
			//ИспользоватьСерии = глЗначениеПеременной("ИспользоватьСерииНоменклатуры");
			if(true/*не ИспользоватьСерии*/)
			{
			}
			//ТоварыТабличнойЧасти = Товары.Выгрузить();
			//ТоварыТабличнойЧасти.Свернуть("Номенклатура");
			//СкладыТабличнойЧасти = Товары.Выгрузить();
			//Сч = 0;
			while(true/*Сч < СкладыТабличнойЧасти.Количество()*/)
			{
				//СтрокаТаблицы = СкладыТабличнойЧасти.Получить(Сч);
				if(true/*ТипЗнч(СтрокаТаблицы[ИмяРеквизитаРазмещение]) <> Тип("СправочникСсылка.Склады")*/)
				{
					//СкладыТабличнойЧасти.Удалить(СтрокаТаблицы);
				}
			}
			/*;
	СкладыТабличнойЧасти.Колонки[ИмяРеквизитаРазмещение].Имя = "Склад";*/
			//СкладыТабличнойЧасти.Свернуть("Склад");
			//МассивНоменклатуры   = ТоварыТабличнойЧасти.ВыгрузитьКолонку("Номенклатура");
			//МассивСклады         = СкладыТабличнойЧасти.ВыгрузитьКолонку("Склад");
			//ТаблицаСерий         = УправлениеЗапасами.ПолучитьТаблицуСвободныхОстатковПоСериям(МассивСклады, ЗаказПокупателя.Организация, МассивНоменклатуры);
			//ВременнаяТаблица     = Товары.Выгрузить();
			//Товары.Очистить();
		}
		//ЗаполнитьПоСериям()
		//Выполняет авторезервирование и авторазмещение в документах ЗаказПокупателя, ВнутреннийЗаказ,
		//	КорректировкаЗаказаПокупателя, КорректировкаВнутреннегоЗаказа, РезервированиеТоваров

		public void Заказ_ЗаполнитьТабличныеЧастиВозможнымРазмещением(/*Параметры, Товары, ВозвратнаяТара*/)
		{
			//Авторезервирование = Параметры.Авторезервирование;
			//Авторазмещение     = Параметры.Авторазмещение;
			if(true/*НЕ Авторезервирование И НЕ Авторазмещение*/)
			{
			}
			//Заказ = Параметры.Заказ;
			//ЗаказСсылка = Заказ.Ссылка;
			//ЕстьСкладЗаказчик = Ложь;
			//ЕстьПредпочтительноеРазмещение = Ложь;
			//ЕстьМассивСтатусовПартий = Ложь;
			//МассивСтатусовПартий = Новый Массив;
			//ЗаполнятьСуммы = ложь;
			//СкладПоУмолчанию = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойСклад");
			//СтратегияАвторезервирования = Параметры.СтратегияАвторезервированияПоЗаказам;
			//ОбособленныйУчет = Параметры.Свойство("ОбособленныйУчет") И Параметры.ОбособленныйУчет;
			if(true/*НЕ ЗначениеЗаполнено(СтратегияАвторезервирования)*/)
			{
				//СтратегияАвторезервирования = Перечисления.СтратегииАвторезервированияНоменклатуры.СначалаВЗаказахПоставщикамПотомНаСкладах;
			}
			//ЗапросСвободныйОстаток = Новый Запрос;
			if(true/*ТипЗнч(ЗаказСсылка)=Тип("ДокументСсылка.ЗаказПокупателя")*/)
			{
				//СкладГруппа = Заказ.СкладГруппа;
				//ЗапросСвободныйОстаток.УстановитьПараметр("ПредпочтительноеРазмещение", ?(ТипЗнч(СкладГруппа) = Тип("СправочникСсылка.Склады"), СкладГруппа, СкладПоУмолчанию));
				//ЕстьПредпочтительноеРазмещение = Истина;
				//ЗапросСвободныйОстаток.УстановитьПараметр("СкладЗаказчик", Неопределено);
				if(true/*ЗначениеЗаполнено(СкладГруппа)
			И ТипЗнч(СкладГруппа) = Тип("СправочникСсылка.ГруппыДоступностиСкладов")*/)
				{
					//ГруппаДоступностиСкладов = СкладГруппа;
				}
				//ЗаполнятьСуммы = истина;
				//ДатаОтгрузки = Заказ.ДатаОтгрузки;
			}
			//ЗапросСвободныйОстаток.УстановитьПараметр("ДатаОтгрузки", ?(НЕ ЗначениеЗаполнено(ДатаОтгрузки), Заказ.Дата, ДатаОтгрузки));
			//ЗапросСвободныйОстаток.УстановитьПараметр("ДокументСсылка", Заказ);
			//ЗапросСвободныйОстаток.УстановитьПараметр("Организация",    Заказ.Организация);
			//ЗапросСвободныйОстаток.УстановитьПараметр( "СтатусПартии",  МассивСтатусовПартий);
			//флРезервированиеТоваров = ложь;
			if(true/*Параметры.Свойство("РезервированиеТоваров")*/)
			{
				//ЗаполнятьСуммы = ложь;
				//флРезервированиеТоваров = истина;
				//ИмяРеквизитаРазмещение = "НовоеРазмещение";
				if(true/*ТипЗнч(ЗаказСсылка) = Тип("ДокументСсылка.ВнутреннийЗаказ")*/)
				{
					/*ТекстЗапросаПоНоменклатуре = "
			|	ВЫБРАТЬ
			|		РегистрВнутренниеЗаказыОстатки.Номенклатура
			|	ИЗ 
			|		РегистрНакопления.ВнутренниеЗаказы.Остатки(, ВнутреннийЗаказ = &СсылкаЗаказ
			|		) КАК РегистрВнутренниеЗаказыОстатки";*/
				}
				//ЗапросСписокНоменклатуры = новый Запрос;
				//ЗапросСписокНоменклатуры.Текст = ТекстЗапросаПоНоменклатуре;
				//ЗапросСписокНоменклатуры.УстановитьПараметр("СсылкаЗаказ",Заказ);
				//Результат = ЗапросСписокНоменклатуры.Выполнить();
				if(true/*Результат.Пустой()*/)
				{
				}
				//Выборка = Результат.Выбрать();
				//МассивНоменклатуры = новый Массив;
				while(true/*Выборка.Следующий()*/)
				{
					//МассивНоменклатуры.Добавить(Выборка.Номенклатура);
				}
				//;;
			}
			/*ТекстФильтраПоСкладам = "
	|(
	|	ВЫБРАТЬ
	|		ГруппыДоступности.Склад
	|	ИЗ
	|		РегистрСведений.СоставГруппДоступностиСкладов КАК ГруппыДоступности
	|	ГДЕ ГруппыДоступности.ГруппаДоступности = &ГруппаДоступностиСкладов)";*/
			//ЗапросСвободныйОстаток.УстановитьПараметр("МассивНоменклатуры",       МассивНоменклатуры);
			//ЗапросСвободныйОстаток.УстановитьПараметр("ГруппаДоступностиСкладов", ГруппаДоступностиСкладов);
			//ЗапросСвободныйОстаток.УстановитьПараметр( "Новый",       Справочники.Качество.Новый);
			if(true/*Авторезервирование*/)
			{
				//УсловиеСклад = "";
				if(true/*ЗначениеЗаполнено(ГруппаДоступностиСкладов)*/)
				{
					//УсловиеСклад = " Склад В" + ТекстФильтраПоСкладам;
					if(true/*ЕстьПредпочтительноеРазмещение*/)
					{
						//УсловиеСклад = УсловиеСклад+" ИЛИ Склад = &ПредпочтительноеРазмещение";
					}
				}
				if(true/*ЕстьСкладЗаказчик*/)
				{
					if(true/*УсловиеСклад = ""*/)
					{
						//УсловиеСклад = "Склад <> &СкладЗаказчик";
					}
				}
				/*ЗапросСвободныйОстаток.Текст = 
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	ТоварыНаСкладахОстатки.Номенклатура,
		|	ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры,
		|	ТоварыНаСкладахОстатки.Склад                      КАК Размещение,
		|	NULL                                              КАК ТоварТара,
		|	NULL                                              КАК ДоговорКонтрагента,
		|	NULL                                              КАК СтатусПартии,
		|	ТоварыНаСкладахОстатки.КоличествоОстаток          КАК Количество,
		|	ТоварыОрганизацийОстатки.КоличествоОстаток        КАК ОстатокПоОрганизации,
		|	ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток  КАК КоличествоРазмещенное,
		|	ТоварыКПередачеСоСкладовОстатки.КоличествоОстаток КАК КоличествоКПередаче,
		|	1                                                 КАК СортировкаРазмещение,"
		+?(ЕстьПредпочтительноеРазмещение, "
		|	ВЫБОР
		|		КОГДА ТоварыНаСкладахОстатки.Склад = &ПредпочтительноеРазмещение ТОГДА
		|			0
		|		ИНАЧЕ
		|			1
		|	КОНЕЦ"
		,"0")+" 											  КАК СортировкаСклад,
		|	NULL                                              КАК ДатаПоступления
		|ИЗ
		|	РегистрНакопления.ТоварыНаСкладах.Остатки(, 
		|		Номенклатура В (&МассивНоменклатуры) И Качество = &Новый
		|" + ?(УсловиеСклад<>""," И ("+УсловиеСклад+")","") + ") КАК ТоварыНаСкладахОстатки
	
		|ЛЕВОЕ СОЕДИНЕНИЕ
		|   РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(, Номенклатура В (&МассивНоменклатуры)) КАК ТоварыВРезервеНаСкладахОстатки
		|ПО ТоварыНаСкладахОстатки.Номенклатура                 = ТоварыВРезервеНаСкладахОстатки.Номенклатура
		|   И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры
		|   И ТоварыНаСкладахОстатки.Склад                      = ТоварыВРезервеНаСкладахОстатки.Склад
		|ЛЕВОЕ СОЕДИНЕНИЕ
		|   РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(, Номенклатура В (&МассивНоменклатуры) И Качество = &Новый ) КАК ТоварыКПередачеСоСкладовОстатки
		|ПО ТоварыНаСкладахОстатки.Номенклатура                 = ТоварыКПередачеСоСкладовОстатки.Номенклатура
		|   И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ТоварыКПередачеСоСкладовОстатки.ХарактеристикаНоменклатуры
		|   И ТоварыНаСкладахОстатки.Склад                      = ТоварыКПередачеСоСкладовОстатки.Склад
		|ЛЕВОЕ СОЕДИНЕНИЕ
		|	РегистрНакопления.ТоварыОрганизаций.Остатки(, Организация = &Организация И Номенклатура В (&МассивНоменклатуры) И Качество = &Новый) КАК ТоварыОрганизацийОстатки
		|ПО   ТоварыНаСкладахОстатки.Номенклатура               = ТоварыОрганизацийОстатки.Номенклатура
		|   И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ТоварыОрганизацийОстатки.ХарактеристикаНоменклатуры
		|";*/
			}
			if(true/*Авторезервирование И Авторазмещение*/)
			{
				/*ЗапросСвободныйОстаток.Текст = ЗапросСвободныйОстаток.Текст +
		"
		|ОБЪЕДИНИТЬ ВСЕ
		|";*/
			}
			if(true/*Авторазмещение*/)
			{
				//УсловиеСклад = "";
				if(true/*ЗначениеЗаполнено(ГруппаДоступностиСкладов)*/)
				{
					//УсловиеСклад = " ЗаказПоставщику.Склад В" + ТекстФильтраПоСкладам;
					if(true/*ЕстьПредпочтительноеРазмещение*/)
					{
						//УсловиеСклад = УсловиеСклад+" ИЛИ ЗаказПоставщику.Склад = &ПредпочтительноеРазмещение";
					}
				}
				if(true/*ЕстьСкладЗаказчик*/)
				{
					if(true/*УсловиеСклад = ""*/)
					{
						//УсловиеСклад = "ЗаказПоставщику.Склад <> &СкладЗаказчик";
					}
				}
				/*ЗапросСвободныйОстаток.Текст = ЗапросСвободныйОстаток.Текст +
		"ВЫБРАТЬ " + ?(ЗапросСвободныйОстаток.Текст = "","РАЗРЕШЕННЫЕ","") + "
		|	ЗаказыПоставщикамОстатки.Номенклатура,
		|	ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры,
		|	ЗаказыПоставщикамОстатки.ЗаказПоставщику                 КАК Размещение,
		|	ОстаткиРазмещенных.ТоварТара,
		|	ЗаказыПоставщикамОстатки.ДоговорКонтрагента,
		|	ЗаказыПоставщикамОстатки.СтатусПартии,
		|	ЗаказыПоставщикамОстатки.КоличествоОстаток               КАК Количество,
		|	ЗаказыПоставщикамОстатки.КоличествоОстаток               КАК ОстатокПоОрганизации,
		|	ОстаткиРазмещенных.КоличествоОстаток                     КАК КоличествоРазмещенное,
		|	0                                                        КАК КоличествоКПередаче,
		|	0                                                        КАК СортировкаРазмещение,"+
		?(ЕстьПредпочтительноеРазмещение,"
		|	ВЫБОР
		|		КОГДА ЗаказыПоставщикамОстатки.ЗаказПоставщику.Склад = &ПредпочтительноеРазмещение ТОГДА
		|			0
		|		ИНАЧЕ
		|			1
		|	КОНЕЦ","0")+"                                            КАК СортировкаСклад,
		|	ЗаказыПоставщикамОстатки.ЗаказПоставщику.ДатаПоступления КАК ДатаПоступления
		|ИЗ
		|	РегистрНакопления.ЗаказыПоставщикам.Остатки(, 
		|		ЗаказПоставщику.ДатаПоступления <= &ДатаОтгрузки
		|		И ЗаказПоставщику.Организация = &Организация
		|		И Номенклатура В (&МассивНоменклатуры)
		|" + ?(УсловиеСклад<>""," И ("+УсловиеСклад+")","") + "
		|" + ?(ЕстьМассивСтатусовПартий," И СтатусПартии В (&СтатусПартии)","")+"
		|       ) КАК ЗаказыПоставщикамОстатки
		|ЛЕВОЕ СОЕДИНЕНИЕ
		|   РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки(, Номенклатура В (&МассивНоменклатуры)) КАК ОстаткиРазмещенных
		|ПО ЗаказыПоставщикамОстатки.Номенклатура                 = ОстаткиРазмещенных.Номенклатура
		|   И ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры = ОстаткиРазмещенных.ХарактеристикаНоменклатуры
		|   И ЗаказыПоставщикамОстатки.ЗаказПоставщику            = ОстаткиРазмещенных.ЗаказПоставщику
		|";*/
			}
			if(true/*Авторезервирование И Авторазмещение*/)
			{
				if(true/*СтратегияАвторезервирования = Перечисления.СтратегииАвторезервированияНоменклатуры.СначалаВЗаказахПоставщикамПотомНаСкладах*/)
				{
					/*// Стратегия авторезервирования: Сначала в заказах поставщикам потом на складах
*/
					/*ЗапросСвободныйОстаток.Текст = ЗапросСвободныйОстаток.Текст + "
			|УПОРЯДОЧИТЬ ПО                 // Определяет стратегию авторезервирования и авторазмещения
			|	СортировкаРазмещение,       // Сначала в заказах, потом на складах
			|	СортировкаСклад,            // Сначала предпочтительный склад, затем остальные
			|	ДатаПоступления УБЫВ,       // В порядке убывания дат отгрузки
			|	Размещение УБЫВ             // Заказы в обратном порядке";*/
				}
			}
			//Таблица = ЗапросСвободныйОстаток.Выполнить().Выгрузить();
			/*// Получим права пользователя на превышение остатков по организации.
*/
			//ПраваНаПревышениеОстатковПоОрганизации = УправлениеДопПравамиПользователей.РазрешеноПревышениеОстаткаТоваровОрганизации(Заказ.Организация);
			/*// Вычислим по каждой строке количества, которые можно разместить
*/
			//Сч = 0;
			while(true/*Сч < Таблица.Количество()*/)
			{
				//СтрокаТаблицы = Таблица.Получить(Сч);
				if(true/*СтрокаТаблицы.Количество <= 0*/)
				{
					//Таблица.Удалить(СтрокаТаблицы);
				}
			}
			/*;

	ПустаяХарактеристикаНоменклатуры = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();*/
			/*// Вычтем из найденных остатков количество, размещение по которому явно указано
*/
			/*// в табличных частях документа. Для этого последовательно обойдем табличные части 
*/
			/*// Товары и Возвратная тара.
*/
			/*// Заполним массив, хранящий две таблицы значений, соответствующих авторазмещению товаров и тары
*/
			//МассивТаблицСтрок = Новый Массив(2);
			/*// Изменяем табличную часть
*/
			if(true/*Параметры.РезервироватьПоСериям*/)
			{
				//ЗаполнитьПоСериям(Заказ, Товары,ИмяРеквизитаРазмещение,Параметры.Свойство("РезервированиеТоваров"));
			}
		}
		////////////////////////////////////////////////////////////////////////////////
		// ПРОЦЕДУРЫ РАБОТЫ С ИНТЕРФЕЙСОМ
		// Функция возвращает таблицу данных документа согласно структуре колонок
		//
		// Параметры
		//  Колонки  – КолонкиТабличногоПоля
		//  ВидДокумента  – Строка - Вид документа
		//  СтруктураПолей  – Структура - Структура полей: Ключ = Имя колонки, Значение = Путь к данным
		//  МассивДокументов  – Массив - Массив документов
		//
		// Возвращаемое значение:
		//   ТаблицаЗначений   – Содержит результат выборки
		//

		public object ПолучитьДанныеДокументаПоСтруктуреКолонок(/*Колонки, ВидДокумента, СтруктураПолей, МассивДокументов*/)
		{
			//РезультатТаблица = Новый ТаблицаЗначений;
			if(true/*МассивДокументов.Количество() = 0*/)
			{
			}
			//ТекстЗапроса = "";
			if(true/*ПустаяСтрока(ТекстЗапроса)*/)
			{
			}
			/*ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|Док.Ссылка КАК ДокСсылка
	|"+ТекстЗапроса + "
	|
	|ИЗ Документ."+ВидДокумента+" КАК Док
	|ГДЕ Док.Ссылка В (&МассивДокументов)";*/
			//Запрос = Новый Запрос;
			//Запрос.Текст = ТекстЗапроса;
			//Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
			//РезультатТаблица = Запрос.Выполнить().Выгрузить();
			return null;
		}
		//ПолучитьДанныеЗаказаПоСтруктуреКолонок
		// Проверяет, что реквизиты Заказов в табличной части совпадают с реквизитами из шапки.
		//
		// Параметры:
		//  ДокументОбъект    - объект проводимого документа,
		//  ИмяТабличнойЧасти - табличная часть документа,
		//  ТаблицаЗначений   - таблица значений, содержащая данные табличной части и признак комплекта
		//  Отказ             - флаг отказа в проведении.
		//  Заголовок         - строка, заголовок сообщения об ошибке проведения.
		//

		public void ПроверитьРеквизитыЗаказов(/*ДокументОбъект, ИмяТабличнойЧасти, ИмяРевизитаЗаказ, 
                                                    Отказ, Заголовок*/)
		{
			//ПредставлениеТабличнойЧасти = ДокументОбъект.Метаданные().ТабличныеЧасти[ИмяТабличнойЧасти].Представление();
			/*// Цикл по строкам таблицы значений.
*/
		}
		// ПроверитьРеквизитыЗаказов()
	}
}
